【联盛德W806上手笔记】九、DMA
目录
- DMA 控制器
- 功能概述
- 功能描述
- DMA 通道
- DMA 数据流
- DMA 循环模式
- DMA 传输模式
- DMA 外设选择
- DMA 链表模式
- DMA 中断
- 中断请求
- 库函数
- 函数
- 参数
- 宏
- 应用
Windows 10 20H2
HLK-W806-V1.0-KIT
WM_SDK_W806_v0.6.0
摘自《W806 MCU 芯片规格书 V2.0》、《WM_W800_寄存器手册 V2.1》
DMA 控制器
最多支持 8 通道,16 个 DMA 请求源,支持链表结构与寄存器控制。
Amba2.0 标准总线接口,8 路 DMA 通道
支持基于存储器链表结构的 DMA 操作
软件配置 16 个硬件请求源
支持 1,4-burst 操作模式
支持 byte、half-word,word 操作
源、目的地址不变或顺序递增可配置或在预定义地址范围内循环操作
同步 DMA 请求和 DMA 响应硬件接口时序
功能概述
DMA 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源,不影响 CPU 进行其他指令的操作。
DMA 挂载在 AHB 总线上,最多支持 8 通道,16 个硬件外设请求源,支持链表结构与寄存器控制。
功能描述
DMA 通道
W800 共支持 8 路 DMA 通道,DMA 通道互相不干涉,可以同时运行。请求不同的数据流可以选择不同的 DMA 通道。
每个 DMA 通道分配在不同的寄存器地址偏移段,可以直接选择相应通道的地址段进行配置使用即可。不同通道的寄存器配置方式完全一致。
DMA 数据流
8 路 DMA 通道能够实现源和目的之间单向数据传输链路。
DMA 的源和目的地址可以设置为每次 DMA 操作完成之后不变、递增或循环三种模式:
DMA_CTRL[2:1]控制源地址每次 DMA 操作后变化方式;
DMA_CTRL[4:3]控制目的地址每次 DMA 操作后变化方式。
DMA 可以设置 byte、half-word、word 的搬运单位,最终搬运数据的数量是搬运单位的整数倍,通过DMA_CTRL[6:5]来设置。
DMA 可以通过 burst 设置每次搬运多少个单位的数据,通过 DMA_CTRL[7]来选择一次搬运 1 或 4 个单位的数据,如果 DMA_CTRL[6:5]设置为 word,burst 设置为 4,则每次搬运 4 个 word 的数据。
DMA 可以设置每次启动 DMA 传输的 Byte 个数,最大 65535 Byte,通过 DMA_CTRL[23:8]来设置。
DMA 循环模式
DMA 循环地址模式是指设置 DMA 的源和目的地址之后,数据搬运达到设定的循环边界之后,会跳转到循环起始地址,如此循环执行,直到到达设定的传输字节。
循环地址模式的源和目的地址需要用 SRC_WRAP_ADDR 和 DEST_WRAP_ADDR 寄存器来设定,并通过WRAP_SIZE 来设定循环的长度值。
DMA 传输模式
DMA 支持 3 种传输模式:
内存到内存
源地址和目的地址均配置成需要传输的内存地址,DMA_MODE[0]设置为 0,软件方式。
内存到外设
源地址设置为内存地址,目的地址设置成外设地址,DMA_MODE[0]设置为 1,硬件方式,
DMA_MODE[5:2]选择所使用的外设。
外设到内存
源地址设置为外设地址,目的地址设置成内存地址,DMA_MODE[0]设置为 1,硬件方式,DMA_MODE[5:2]选择所使用的外设。
DMA 外设选择
当使用外设到内存或者内存到外设这种传输方式的时候,除了相应的外设需要设置为 DMA TX 或 RX 外,DMA_MODE[5:2]也需要选择对应的外设。
注意:因为 UART 口共有 3 个,在 UART 使用 DMA 的时候,还需要通过 UART_CH[1:0]来选择对应的UART。
DMA 链表模式
DMA 支持链表工作模式。 通过链表模式,我们在 DMA 搬运当前链表内存数据的时候,可以提前向下一个链表中填充数据,DMA 搬完当前链表之后,判断到下一个链表有效,可以直接搬运下一个链表的数据。通过链表的方式可以有效的提高 DMA 和 CPU 配合的效率。
链表操作方式:通过 DMA_MODE[1]寄存器设置 DMA 为链表工作方式,再将 DESC_ADDR 寄存器设置为链表结构的起始地址,然后再通过 CHNL_CTRL 寄存器使能 DMA。当 DMA 处理完成当前内存的搬移后,软件通过设置有效标志,通知 DMA 链表中依然存在有效的数据,DMA 依据链表的有效标志处理下一个待搬移数据。
DMA 中断
DMA 传输完成或者 burst 均可以产生中断,INT_MASK 寄存器可以屏蔽 DMA 通道对应的中断。当 DMA 相应中断产生后,可以通过 INT_SRC 寄存器查询当前中断的状态,指示当前是什么产生的中断,相应的状态位需要软件写 1 清 0。
中断请求
值得注意的是,SPI的DMA是LSPI的:
库函数
打开wm_dma.h,有如下内容:
函数
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);
HAL_StatusTypeDef HAL_DMA_DeInit (DMA_HandleTypeDef *hdma);
HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint16_t DataLength);
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint16_t DataLength);
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);
HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout);
void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma);
参数
结构体和枚举类型
typedef enum
{HAL_DMA_STATE_RESET = 0x00U,HAL_DMA_STATE_READY = 0x01U,HAL_DMA_STATE_BUSY = 0x02U,HAL_DMA_STATE_TIMEOUT = 0x03U
}HAL_DMA_StateTypeDef;typedef struct
{uint32_t Direction; /* Specifies if the data will be transferred from memory to peripheral,from peripheral to memory or from memmory to memory.This parameter can be a value of @ref DMA_DATA_TRANSFER_DIRECTION*/uint32_t DestInc; /* Specifies weather the destination address should be incremented or not.When mode is DMA_MODE_NORMAL_CIRCULAR and destination address need increment,must choose DMA_DINC_CIRCULAR.This parameter can be a value of @ref DMA_DEST_ADDR_INCREMENT*/uint32_t SrcInc; /* Specifies weather the source address should be incremented or not.When mode is DMA_MODE_NORMAL_CIRCULAR and Source address need increment,must choose DMA_SINC_CIRCULAR.This parameter can be a value of @ref DMA_SRC_ADDR_INCREMENT*/uint32_t DataAlignment; /* Specifies the transport unit.This parameter can be a value of @ref DMA_DATAALIGN*/uint32_t Mode; /* Specifies the operation mode of the DMA channelx. When you need to use half-complete interrupts, you must use link mode.This parameter can be a value of @ref DMA_MODE*/uint32_t RequestSourceSel; /* Specifies the request source of DMA.This parameter can be a value of @ref DMA_REQUEST_SOURCE*/uint32_t RequestUartSel; /* Specifies the UART number when the RequestSourceSel is DMA_REQUEST_SOURCE_UART_RXor DMA_REQUEST_SOURCE_UART_TX. This parameter can be a value of @ref DMA_UART_CHANNEL_SEL*/} DMA_InitTypeDef;/* The descriptor structure is used internally by the driver layer,and the user layer does not need to be assigned. */
typedef struct __DMA_LinkDescriptor
{uint32_t Valid; /* According to the Bit31 to indicate whether the data pointed to by the descriptor is valid. Bit31 equal to 1 means valid, equal to 0 means invalid */uint32_t Control; /* Equal to the value of register CR2[23:1] */uint32_t SrcAddr; /* Data source address */uint32_t DestAddr; /* Data destinathion address */struct __DMA_LinkDescriptor *Next; /* Point to the address of the next descriptor structure */} DMA_LinkDescriptor;typedef enum
{HAL_DMA_HALF_TRANSFER = 0,HAL_DMA_FULL_TRANSFER = 1
} HAL_DMA_LevelCompleteTypeDef;typedef struct __DMA_HandleTypeDef
{DMA_Channel_TypeDef *Instance; /* Register base address of the channel used. Need user layer assignment.*/DMA_InitTypeDef Init; /* DMA communication parameters. Need user layer assignment*/HAL_LockTypeDef Lock; /* DMA locking object. */HAL_DMA_StateTypeDef State; /* DMA transfer state. */void *Parent; /* Parent object state. Need user layer assignment*/void (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /* DMA transfer complete callback. */void (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma); /* DMA Half transfer complete callback. */void (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma); /* DMA transfer abort callback. */DMA_TypeDef *DmaBaseAddress; /* DMA register base address. */uint32_t ChannelIndex; /* DMA Channel Index. */__IO uint32_t ErrorCode; /* DMA error code. */DMA_LinkDescriptor *LinkDesc; /* Points to the descriptor address. When user need to use the DMA half-completed interrupt, assign a value in the user layer.E.g DMA_LinkDescriptor desc[2], Size must be 2. */uint32_t offset; /* For internal use, the user does not need to assign a value. */} DMA_HandleTypeDef;
宏参数
// DMA register base address and channel base address.
#define DMA ((DMA_TypeDef *)DMA_BASE)
#define DMA_Channel0 ((DMA_Channel_TypeDef *)DMA_Channel0_BASE)
#define DMA_Channel1 ((DMA_Channel_TypeDef *)DMA_Channel1_BASE)
#define DMA_Channel2 ((DMA_Channel_TypeDef *)DMA_Channel2_BASE)
#define DMA_Channel3 ((DMA_Channel_TypeDef *)DMA_Channel3_BASE)
#define DMA_Channel4 ((DMA_Channel_TypeDef *)DMA_Channel4_BASE)
#define DMA_Channel5 ((DMA_Channel_TypeDef *)DMA_Channel5_BASE)
#define DMA_Channel6 ((DMA_Channel_TypeDef *)DMA_Channel6_BASE)
#define DMA_Channel7 ((DMA_Channel_TypeDef *)DMA_Channel7_BASE)// DMA Error Code
#define HAL_DMA_ERROR_NONE 0x0U // No error
#define HAL_DMA_ERROR_NO_XFER 0x1U // no ongoing transfer
#define HAL_DMA_ERROR_TIMEOUT 0x2U // Timout error
#define HAL_DMA_ERROR_NOT_SUPPORTED 0x4U // Not supported mode// DMA_DATA_TRANSFER_DIRECTION
#define DMA_PERIPH_TO_MEMORY ((uint32_t)DMA_MODE_SHM) // Peripheral to memory direction
#define DMA_MEMORY_TO_PERIPH ((uint32_t)DMA_MODE_SHM) // Memory to peripheral direction
#define DMA_MEMORY_TO_MEMORY 0x00000000U // Memory to memory direction// DMA_DEST_ADDR_INCREMENT
#define DMA_DINC_ENABLE ((uint32_t)DMA_CR2_DINC_ENABLE) // Destination address increment mode Enable
#define DMA_DINC_DISABLE ((uint32_t)DMA_CR2_DINC_DISABLE) // Destination address increment mode Disable
#define DMA_DINC_CIRCULAR ((uint32_t)DMA_CR2_DINC_CYCLE) // Destination address circular mode. Only when Mode = DMA_MODE_NORMAL_CIRCULAR// DMA_SRC_ADDR_INCREMENT
#define DMA_SINC_ENABLE ((uint32_t)DMA_CR2_SINC_ENABLE) // Source address increment mode Enable
#define DMA_SINC_DISABLE ((uint32_t)DMA_CR2_SINC_DISABLE) // Source address increment mode Disable
#define DMA_SINC_CIRCULAR ((uint32_t)DMA_CR2_SINC_CYCLE) // Source address circular mode. Only when Mode = DMA_MODE_NORMAL_CIRCULAR// DMA_DATAALIGN
#define DMA_DATAALIGN_BYTE ((uint32_t)DMA_CR2_TRANS_SIZE_BYTE) // Memory data alignment: Byte
#define DMA_DATAALIGN_HALFWORD ((uint32_t)DMA_CR2_TRANS_SIZE_HALFWORD) // Memory data alignment: HalfWord
#define DMA_DATAALIGN_WORD ((uint32_t)DMA_CR2_TRANS_SIZE_WORD) // Memory data alignment: Word// DMA_MODE
#define DMA_MODE_NORMAL_SINGLE 0x00000000U // Normal single mode
#define DMA_MODE_NORMAL_CIRCULAR 0x00000001U // Normal circular mode
#define DMA_MODE_LINK_SINGLE 0x00000002U // Link singal mode
#define DMA_MODE_LINK_CIRCULAR 0x00000003U // Link circular mode// DMA_INTERRUPT_TYPE
#define DMA_FLAG_TF_DONE DMA_IF_TRANSFER_DONE // Transfer complete interrupt
#define DMA_FLAG_BURST_DONE DMA_IF_BURST_DONE // Burst complete interrupt// DMA_REQUEST_SOURCE
#define DMA_REQUEST_SOURCE_UART_RX DMA_MODE_CH_UART_RX
#define DMA_REQUEST_SOURCE_UART_TX DMA_MODE_CH_UART_TX
#define DMA_REQUEST_SOURCE_PWM_CAP0 DMA_MODE_CH_PWM_CAP0
#define DMA_REQUEST_SOURCE_PWM_CAP1 DMA_MODE_CH_PWM_CAP1
#define DMA_REQUEST_SOURCE_SPI_RX DMA_MODE_CH_LSPI_RX
#define DMA_REQUEST_SOURCE_SPI_TX DMA_MODE_CH_LSPI_TX
#define DMA_REQUEST_SOURCE_ADC_CH0 DMA_MODE_CH_ADC0
#define DMA_REQUEST_SOURCE_ADC_CH1 DMA_MODE_CH_ADC1
#define DMA_REQUEST_SOURCE_ADC_CH2 DMA_MODE_CH_ADC2
#define DMA_REQUEST_SOURCE_ADC_CH3 DMA_MODE_CH_ADC3
#define DMA_REQUEST_SOURCE_I2S_RX DMA_MODE_CH_I2SRX
#define DMA_REQUEST_SOURCE_I2S_TX DMA_MODE_CH_I2STX
#define DMA_REQUEST_SOURCE_SDIO DMA_MODE_CH_SDIO// DMA_UART_CHANNEL_SEL
#define DMA_UART_CHANNEL_SEL_UART0 DMA_REQCH_UART0
#define DMA_UART_CHANNEL_SEL_UART1 DMA_REQCH_UART1
#define DMA_UART_CHANNEL_SEL_UART2 DMA_REQCH_UART2
#define DMA_UART_CHANNEL_SEL_UART3 DMA_REQCH_UART3
#define DMA_UART_CHANNEL_SEL_UART4 DMA_REQCH_UART4
#define DMA_UART_CHANNEL_SEL_UART5 DMA_REQCH_UART5
宏
#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DMA_Channel0) || \((INSTANCE) == DMA_Channel1) || \((INSTANCE) == DMA_Channel2) || \((INSTANCE) == DMA_Channel3) || \((INSTANCE) == DMA_Channel4) || \((INSTANCE) == DMA_Channel5) || \((INSTANCE) == DMA_Channel6) || \((INSTANCE) == DMA_Channel7))#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY) || \((DIRECTION) == DMA_MEMORY_TO_PERIPH) || \((DIRECTION) == DMA_MEMORY_TO_MEMORY))#define IS_DMA_DEST_INC_STATE(STATE) (((STATE) == DMA_DINC_ENABLE) || \((STATE) == DMA_DINC_DISABLE))#define IS_DMA_SRC_INC_STATE(STATE) (((STATE) == DMA_SINC_ENABLE) || \((STATE) == DMA_SINC_DISABLE))#define IS_DMA_DATA_SIZE(SIZE) (((SIZE) == DMA_DATAALIGN_BYTE) || \((SIZE) == DMA_DATAALIGN_HALFWORD) || \((SIZE) == DMA_DATAALIGN_WORD))#define IS_DMA_MODE(MODE) (((MODE) == DMA_MODE_NORMAL_SINGLE) || \((MODE) == DMA_MODE_NORMAL_CIRCULAR) || \((MODE) == DMA_MODE_LINK_SINGLE) || \((MODE) == DMA_MODE_LINK_CIRCULAR))#define IS_DMA_REQUEST_SOURCE(SEL) (((SEL) == DMA_REQUEST_SOURCE_UART_RX) || \((SEL) == DMA_REQUEST_SOURCE_UART_TX) || \((SEL) == DMA_REQUEST_SOURCE_PWM_CAP0) || \((SEL) == DMA_REQUEST_SOURCE_PWM_CAP1) || \((SEL) == DMA_REQUEST_SOURCE_SPI_RX) || \((SEL) == DMA_REQUEST_SOURCE_SPI_TX) || \((SEL) == DMA_REQUEST_SOURCE_ADC_CH0) || \((SEL) == DMA_REQUEST_SOURCE_ADC_CH1) || \((SEL) == DMA_REQUEST_SOURCE_ADC_CH2) || \((SEL) == DMA_REQUEST_SOURCE_ADC_CH3) || \((SEL) == DMA_REQUEST_SOURCE_I2S_RX) || \((SEL) == DMA_REQUEST_SOURCE_I2S_TX) || \((SEL) == DMA_REQUEST_SOURCE_SDIO))#define IS_DMA_UART_CHANNEL(CHANNEL) (((CHANNEL) == DMA_UART_CHANNEL_SEL_UART0) || \((CHANNEL) == DMA_UART_CHANNEL_SEL_UART1) || \((CHANNEL) == DMA_UART_CHANNEL_SEL_UART2) || \((CHANNEL) == DMA_UART_CHANNEL_SEL_UART3) || \((CHANNEL) == DMA_UART_CHANNEL_SEL_UART4) || \((CHANNEL) == DMA_UART_CHANNEL_SEL_UART5)) #define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1U) && ((SIZE) < 0x10000U))#define IS_DMA_SRC_ADDR(SRC) (((SRC) % 4) == 0)#define IS_DMA_DEST_ADDR(DEST) (((DEST) % 4) == 0)#define IS_DMA_LENGTH(DATAALIGN, LEN) ((((DATAALIGN) == DMA_DATAALIGN_BYTE) && (((LEN) % 1) == 0)) || \(((DATAALIGN) == DMA_DATAALIGN_HALFWORD) && (((LEN) % 2) == 0)) || \(((DATAALIGN) == DMA_DATAALIGN_WORD) && (((LEN) % 4) == 0)))#define IS_DMA_LINK_LENGTH(LEN) (((LINK) % 8) == 0)#define IS_DMA_COMPLETELEVEL(LEVEL) (((LEVEL) == HAL_DMA_HALF_TRANSFER) || ((LEVEL) = HAL_DMA_FULL_TRANSFER))#define __HAL_DMA_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR1, DMA_CR1_START))#define __HAL_DMA_DISABLE(__HANDLE__) do { \SET_BIT((__HANDLE__)->Instance->CR1, DMA_CR1_STOP); \while ((__HANDLE__)->Instance->CR1 & DMA_CR1_START); \} while (0)#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) (CLEAR_BIT((__HANDLE__)->DmaBaseAddress->IM, (__INTERRUPT__)))#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) (SET_BIT((__HANDLE__)->DmaBaseAddress->IM, (__INTERRUPT__)))#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->DmaBaseAddress->IF) & (__FLAG__))#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (SET_BIT((__HANDLE__)->DmaBaseAddress->IF, (__FLAG__)))
应用
在WM_SDK_W806_v0.6.0中,仅有SPI和I2S有具体的DMA实现:
SPI的应用见【联盛德W806上手笔记】八、SPI及其DMA
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- PostgreSQL单个表误删除进行恢复
PostgreSQL单个表误删除进行恢复 最后编辑时间:2022年1月23日00:09:24 恢复步骤: 1)首先找到最近的备份文件(日常备份必不可少) 2)创建一个新的数据库,并用备份文件进行恢复 3)在新的…...
2024/4/14 2:32:17 - python集合(set)
set天生去重(特点)set自动排序(特点)set用{ }定义,元素之间用,分隔创建空集合用set()。因为{}用来创建字典了。set支持数据的增,删set天生去重 实例: set1 {1,2,2,2,1,1} pirnt(set…...
2024/4/19 16:34:53 - 【数据可视化应用】绘制动态图表(附Python代码)
前言 最近发现一个可视化图库「Pandas_Alive」,不仅包含动态条形图,还可以绘制动态曲线图、气泡图、饼状图、地图等。 同样也是几行代码就能完成动态图表的绘制。 GitHub地址: https://github.com/JackMcKew/pandas_alive 使用文档:https://jackmckew.github.io/pandas_a…...
2024/5/4 2:54:21 - 【行研报告】2021人工智能创新研究院(AILabs)报告——附下载链接
从最初颠覆式创新姿态闯入应用领域,人工智能技术发展突飞猛进,早已势不可挡渗透人类生活各个层面。如今的全球人工智能技术与产业基本形成了由芯片、开发框架、数据、算法、应用组成的产业生态,在计算机视觉、自然语言处理、自适应学习、群体…...
2024/4/7 17:43:33 - 汽车电子专业知识篇(十八)-特斯拉Model S高压系统对标分析报告
...
2024/4/7 17:43:37 - 《OpenSSL3.0学习之二 加密库算法获取|CSDN创作打卡》
📒博客首页:男星的博客 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 ❤️ 期待一起交流! 🙏作者水平很有限,如果发现错误,求告知,多谢! &#x…...
2024/4/20 3:27:22 - 后缀表达式
#include <iostream> #include<algorithm> #include<math.h> using namespace std; int main() {int n,m,i;long long s0;//值的范围最大可以为10的9次方,当值相加时,超出int范围,需long long接收cin>>n>>m;lo…...
2024/5/4 8:59:57 - powershell报错:invalid command ‘hook‘ Invoke-Expression : Cannot bind argument to parameter ‘Command‘
powershell报错:invalid command ‘hook’ Invoke-Expression : Cannot bind argument to parameter ‘Command’ because it is an empty string. 每次启动powershell,总会有这个错误出来,没报错截图,但在StackOverflow上找到一…...
2024/4/14 2:32:48 - 浅谈EMC之一 电磁兼容性
从今天开始,我们开始浅浅的了解下EMC的知识。 电磁兼容性的基本概念 标题# 学习目标: 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如࿱…...
2024/5/4 7:42:33 - vue打包降低vendors.js文件的大小
vue打包项目优化 减少vendors.js文件的大小 我们在打包vue项目的时候经常会遇到打包后的文件中vendors.js文件特别大,这个文件中的内容主要是我们项目中引入的第三方插件js文件,我们可以更改webpack的配置文件来排除这些第三方插件,然后在i…...
2024/4/26 10:39:16 - 解决问题:修改jupyter notebook 默认路径成自定义路径
我下载完jupyter notebook后文件路径是C:\users\administrator,但C盘快满了,我想修改到其他盘如F盘 步骤如下: 找到jupyter notebook,右击属性将%USERPROFILE%换成你想要放置文件的路径。 3.修改后重启 找到F盘,在上面框框输入c…...
2024/4/14 2:32:43 - SpringMVC源码(三):Spring整合SpringMVC以及父子容器启动流程分析
Spring整合SpringMVC Spring整合SpringMVC的方式是父子容器形式 父容器Spring管理Service、Dao层的Bean 子容器SpringMVC管理Controller的Bean 子容器可以访问父容器的Bean,父容器无法访问子容器的Bean 而SpringBoot是SpringMVC零Xml配置基础上出现的,那SpringMVC…...
2024/4/28 17:05:58 - UA OPTI544 量子光学2 光与介质相互作用的经典力学方法
UA OPTI544 量子光学2 光与介质相互作用的经典力学方法Lorentz模型Complex PolarizabilityComplex index of refraction气体介质中的吸收与散射自由电子中的吸收与散射光对电偶极子施加的力黑体和头上带箭头的都表示向量,头上带小尖帽的表示单位向量 Lorentz模型 …...
2024/4/19 13:05:27 - idea报错“NoSuchMethodError“
java.lang.NoSuchMethodError: com.offcn.entity.Result.<init>(ZILjava/lang/String;Ljava/lang/Object;)原因:返回Resul对象时未加泛型 修改后:...
2024/4/16 9:33:09 - 车的系统部分原理-简要笔记【亟待整理】
车身电子稳定系统(ESP),是对旨在提升车辆的操控表现的同时、有效地防止汽车达到其动态极限时失控的系统或程序的通称。电子稳定程序能提升车辆的安全性和操控性。 参考资料 车身电子稳定系统_百度百科 什么情况下才能关掉ESP?别…...
2024/4/19 4:18:48 - 【联盛德W806上手笔记】八、SPI及其DMA
目录高速 SPI 设备控制器库函数函数参数宏应用示例初始化引脚复用中断相关使用注意事项DataAlignmentDirection测试main.cwm_hal_msp.cwm_it.c其他改动实验现象Windows 10 20H2 HLK-W806-V1.0-KIT WM_SDK_W806_v0.6.0 摘自《W806 芯片设计指导书 V1.0》、《W806 MCU 芯片规格书…...
2024/4/14 2:32:38 - 数的分解蓝桥杯
#include <iostream> using namespace std; int f(int n) { int flag1; while(n>0){ int kn%10; if(k2 || k4) //只要数字中含有2或4就立刻返回 { flag 0; return flag; } n/10; }return flag; } int main() { int a,b,c,s0; for(a1;a<673;a)//a的范围2019的三分…...
2024/4/19 9:04:05 - 第8期:2021牛客寒假算法基础集训营1
A-串 //dp待补 #include<iostream> using namespace std; #define int long long const int N1e97; signed main(){int n;cin>>n;int dp[n1][3];int ans0;dp[1][0]25,dp[1][1]1,dp[1][2]0;for(int i2;i<n;i){dp[i][0]dp[i-1][0]*25;dp[i][0]%N;dp[i][1]dp[i-1]…...
2024/4/14 2:32:43 - 【总结】Vue 组件升级 - 插槽
业务场景: 当组件内某一部分标签不确定 作用: 1.让组件的复用性更强, 灵活度更高 2.组件内部标签不确定时, 可以通过插槽传入 用法: 基本使用 在子组件中使用 slot 标签占位 在父组件中传入标签替换 slot 默认内容 在 slot 中设置默认内容 具名插槽 业务场景: 组件…...
2024/4/14 2:33:08 - OpenCV 轮廓周围绘制矩形框和圆形框
文章目录轮廓周围绘制介绍相关API减少多边形轮廓点数:approxPolyDP轮廓周围绘制矩形:boundingRect、minAreaRect轮廓周围绘制圆和椭圆:minEnclosingCircle、fitEllipse绘制步骤代码示例轮廓周围绘制介绍 没什么概念,就是给得出来…...
2024/4/14 2:32:48
最新文章
- 每日OJ题_贪心算法二⑥_力扣409. 最长回文串
目录 力扣409. 最长回文串 解析代码 力扣409. 最长回文串 409. 最长回文串 难度 简单 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个…...
2024/5/4 9:26:10 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - C#,简单,精巧,实用的文件夹时间整理工具FolderTime
点击下载本文软件(5积分): https://download.csdn.net/download/beijinghorn/89071073https://download.csdn.net/download/beijinghorn/89071073 百度网盘(不需积分): https://pan.baidu.com/s/1FwCsSz…...
2024/5/1 13:50:22 - CSS使用JS变量
1. CSS变量 CSS 变量(也称为自定义属性)允许我们在 CSS 中定义可重复使用的值,并将其应用于不同的选择器。为了创建一个 CSS 变量,我们需要使用 -- 前缀,然后可以像常规属性一样使用它。 :root {--primary-color: bl…...
2024/5/3 17:12:15 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57