串口DMA发送和接收


一、介绍DMA

1.什么是DMA

DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
在这里插入图片描述

2.DMA的原理

DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
在这里插入图片描述

3.DMA工作原理图

在这里插入图片描述

二、通过STMCude生成芯片代码

1.设置RCC

在这里插入图片描述## 2.设置USART
在这里插入图片描述
在这里插入图片描述

3.DMA设置

在这里插入图片描述

4.DMA基础设置

点击右侧System Core找到DMA
在这里插入图片描述
Channel DMA传输通道设置
DMA1 : DMA1 Channel 0~DMA1 Channel 7
DMA2: DMA2 Channel 1~DMA1 Channel 5

Dirction : DMA传输方向
四种传输方向:

外设到内存 Peripheral To Memory
内存到外设 Memory To Peripheral
内存到内存 Memory To Memory
外设到外设 Peripheral To Peripheral
Priority: 传输速度

最高优先级 Very Hight
高优先级 Hight
中等优先级 Medium
低优先级;Low
2DMA传输模式
在这里插入图片描述
这里分两个模式
Normal为正常模式,当一次DMA数据传输完后停止DMA传送,也就是只传输一次
Circular为循环模式,传输完成后继续传输,不断循环

3DMA指针递增设置
在这里插入图片描述

5.时钟设置

在这里插入图片描述

6.创建项目

在这里插入图片描述
注意文件名不能含有中文
在这里插入图片描述
在这里插入图片描述

三、调制KEIL代码

打开main.c
在main函数添加下列函数
在这里插入图片描述
在while循环中添加
在这里插入图片描述

四、使用mcuisp烧录代码到芯片

在这里插入图片描述

五、结果展示

在这里插入图片描述

六、参考

https://baike.baidu.com/item/DMA/2385376#%E4%BC%A0%E9%80%81%E6%96%B9%E5%BC%8F

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值