STM32学习之路(四--DMA)

本文详细介绍了STM32中的DMA(直接存储器访问)技术,包括其主要特性、配置过程及传输函数。DMA允许数据在不同地址空间间高效传输而无需CPU干预,减轻了CPU负担并提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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通道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值