欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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:优先权,配置为高。