请教香主,串口DMA方式接收数据

[复制链接]
2636|3
 楼主| zhangxk 发表于 2009-4-13 12:33 | 显示全部楼层 |阅读模式
使用DMA方式接收串口数据,串口不间断的有数据进入的情况下,如果设置为接收完产生中断,那么在中断程序中需要DISABLE接收的DMA通道,然后重新设置内存地址和计数器,再ENABLE接收的DMA通道,在这样操作是会不会有都数据的可能?
香水城 发表于 2009-4-13 12:40 | 显示全部楼层

如果怕来不及再次启动DMA,可以使用DMA的循环模式

但是无论如何,你自己要保证有足够的时间拷贝接收到的数据和处理这些数据。

至于是否会丢失数据,要你自己根据实际情况计算一下,如处理的工作量、是否有其他操作、USART的速度等因素。
 楼主| zhangxk 发表于 2009-4-13 12:47 | 显示全部楼层

关于循环模式

在循环模式下,是否只能在接收完产生中断后读取全部数据,如果是接收一半产生中断然后读取数据,这样数据是否存储顺序就乱了?
香水城 发表于 2009-4-13 13:39 | 显示全部楼层

你自己的程序和通信协议必须保证存储顺序的正确性

STM32的USART和DMA操作只是为你提供了手段,如何使用这个手段是你所需要考虑的。


关于你的问题:如果是接收一半产生中断然后读取数据,这样数据是否存储顺序就乱了?

我不太理解为什么会产生存储顺序乱了的情况,这应该与你的程序和通信协议有关,因为你没有给出这些信息,我无法判断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

69

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部