18363890557 发表于 2020-9-21 09:42:47

08-单片机发送数据之缓存管理,DMA




1. 前言 在单片机通信项目中,经常会用到发送数据,大家有没有想过什么方式才是最优的方式?
大家是否想过有没有什么标准的方案可以解决一切可能?2. 基本应用 1.创建一个缓存区




2.串口接收的数据插入缓存,每隔500ms插入数据到缓存


3.没有在中断发送数据,提取缓存数据,执行中断发送


4. 测试


3.说明上面的程序实际上还是使用中断发送数据,只不过数据是先存入缓存,然后从缓存里面取出来以后再发送.
以上发送数据程序基本上适用于各种大大小小的项目.
4.扩展(加入时间间隔-方式1)以上程序有个问题:每条数据之间基本上没有时间间隔
只要发送完了上一条,立马发送下一条






发送完数据以后设置一个变量为20,该变量在定时器每隔1ms减一,
等到减到0以后才会再次提取发送数据.
但是上面的发送时间受主循环延时的影响.
5.扩展(加入时间间隔-方式2)1.在定时器里面每隔20ms提取一次数据,打开串口发送中断


2.串口中断发送数据


3.其它地方只需要插入数据即可


6.DMA发送1.配置串口以DMA方式发送数据


2.配置DMA


3.如果DMA没有发送数据,则重新设置DMA


4.测试
页: [1]
查看完整版本: 08-单片机发送数据之缓存管理,DMA