stm32学习随记:DMA使用(HAL库)
程序员文章站
2022-06-03 20:46:01
...
1、stm32f103 有两个DMA
2、DMA1 有 7个通道, DMA2有5个通道。同一时间内是能使用一个通道,所以要设定好优先级。
可以在 DMA_CCRx 寄存器中设 置,有最高优先级、高优先级、中等优先级和低优先级四个等级。
第二阶段 是硬件,如果两个请求有相同的软件优先级,则较低编号的通道比高编号的 通道有较高的优先权。例如:通道 2 优先于通道 4。
3、DMA 通道,每个通道都可以在由固定地址的外设寄存器和存储器之间执行 DMA 传输。 所以,我们要找到外设寄存器存放数据的地址 和 存储的变量的地址。
4、DMA有三种中断方式: 传输过半,传输完成和传输错误。
5、HAL函数部分,用stm32cube设置好DMA后,查看一下DMA的初始化。
01 typedef struct {
02 uint32_t Direction; // 方向
03 uint32_t PeriphInc; // 寄存器自增
04 uint32_t MemInc; // 内存自增
05 uint32_t PeriphDataAlignment; // 寄存器数据对齐
06 uint32_t MemDataAlignment; // 内存数据对齐
07 uint32_t Mode; // 模式
08 uint32_t Priority; // 优先级
09 } DMA_InitTypeDef;
Direction:传输方向,有三种,分别是外设到存储器、存储器到外设和存储
器到存储器,根据工程要求来选择三种传输方向。
PeriphInc:配置外设地址寄存器是否要自动递增,这里配置为递增
MemInc:使能存储器地址自动递增功能。我们自定义的存储器一般都是存放
多个数据的,所以使能存储器地址自动递增功能。 PeriphDataAlignment:外设数据长度调整,有三种分别是字节、字和半字,配
置为字节。
MemDataAlignment:存储器数据字长调整,类似外设。
Mode:配置传输模式,配置为常规类型。 Priority:优先权,配置为高。
推荐阅读
-
STM32 HAL库中串口空闲中断+DMA 实现串口数据的不定长接收
-
【STM32】(F207)_HAL库开发教程(四)—串口FIFO使用
-
STM32固件库的学习及使用固件库编写工程模板
-
STM32基础教程 —— 使用HAL库(CubeMX)
-
STM32F103用hal库使用DMA+串口空闲中断接收数据
-
STM32:HAL库使用定时器作为Systick时钟的方法
-
(HAL库学习3)STM32CubeMX HAL库 ADC与DAC使用
-
(HAL库学习5) STM32CubeMX HAL库 外部中断使用
-
(HAL库学习6)STM32CubeMX HAL库 定时器的使用
-
STM32单片机利用软件定时器实现分时多任务(使用HAL库编写)