10.3.1 DMA句柄及初始化

更新于 2026年10月10日 版权声明
10.3.1 DMA句柄及初始化

1.DMA句柄定义

DMA的句柄是用结构体DMA_HandleTypeDef定义的,用于对DMA控制器进行配置,定义如下。

图示

句柄DMA_HandleTypeDef提供给所有DMA相关库函数使用,因此在应用相关函数之前,要先用句柄对DMA进行配置。

2.DMA初始化

DMA初始化是用一个结构体DMA_InitTypeDef完成的,包括初始化DMA传输方式、外设内存的地址是否递增、外设及内存数据宽度、工作模式和优先配置等参数。DMA_InitTypeDef结构体定义如下。

图示

各语句功能如下。

①Direction:指定DMA数据传输方式,有以下3种传输方式可以选择。

•DMA_PERIPH_TO_MEMORY:外设到内存。

•DMA_MEMORY_TO_PERIPH:内存到外设。

•DMA_MEMORY_TO_MEMORY:内存到内存。

②PeriphInc和③MemInc:指定外设和内存的地址是否递增,其分别有以下两种选择方式。

•DMA_PINC_ENABLE:外设使能递增;DMA_PINC_DISABLE:外设禁止递增。

•DMA_MINC_ENABLE:内存使能递增;DMA_MINC_DISABLE:内存禁止递增。

④PeriphDataAlignment和⑤MemDataAlignment:指定外设数据宽度和内存数据宽度,有3种设置选择,即字节、半字、字。

•DMA_PDATAALIGN_BYTE:外设字节。(https://www.daowen.com)

•DMA_PDATAALIGN_HALFWORD:外设半字。

•DMA_PDATAALIGN_WORD:外设字。

•DMA_MDATAALIGN_BYTE:内存字节。

•DMA_MDATAALIGN_HALFWORD:内存半字。

•DMA_MDATAALIGN_WORD:内存字。

⑥Mode:指定DMA通道x的工作模式,有普通模式和循环模式。

注:若在所选通道上配置了内存到内存的数据传输,则不能使用循环模式。

•DMA_NORMAL:普通模式。

•DMA_CIRCULAR:循环模式。

⑦Priority:指定DMA通道x的软件优先级,有以下4种优先级设置。

•DMA_PRIORITY_LOW:低级。

•DMA_PRIORITY_MEDIUM:中等。

•DMA_PRIORITY_HIGH:高级。

•DMA_PRIORITY_VERY_HIGH:最高。

例如,要定义一个外设串口1用于DMA数据传输,程序如下。

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)