STM32学习之路(四---)

DMA即直接存储器访问,DMA传输是将数据从一个地址空间复制到另一个地址空间。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程。
STM32的DMA有以下一些特征:
1、每一个通道都直接连接专用的硬件DMA请求,每一个通道都同样支持软件触发。这些功能通过软件来配置
2、在七个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中、低),优先级相同的话就由硬件来决定(请求0优先于请求1)
3、支持循环的缓冲器管理
4、每一个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。
5、可编程的数据传输数目:最大为65535
DMA的配置程序过程:
1、使能DMA的时钟
2、初始化DMA的通道参数
3、使能串口DMA发送
4、使能DMA通道,启动传输
5、查询DMA传输状态
6、获取/设置通道当前剩余数据量
DMA配置的函数在库函数stm32f10x_dma.h和stm32f10x_dma.c中
在这里插入图片描述
针对上面程序的理解是:
第一块是DMA时钟的使能和通道寄存器的重设
第二块是DMA的初始化,结构体的第一个成员变量是DMA的外设基地址,第二个变量是DMA内存的基地址,第三个变量是DMA的数据传输方向,第四个变量是DMA通道的DMA缓存的大小,第五个变量是设置外设的基地址变或者不变,第六个变量是设置内存地址变或者不变,第七个变量是设置外设数据宽度的大小,第八个变量是设置内存的数据宽度,第九个变量是设置DMA的工作方式,第十个变量是设置DMA通道的优先级,低十一个变量是设置是否是内存到内存。
在这里插入图片描述
DMA传输函数:首先先关闭DMA通道,然后设置通道缓存大小,最后在开启DMA通道。

猜你喜欢

转载自blog.csdn.net/weixin_42994525/article/details/82764534