大家都是用什么方式判断串口接收一段数据结束的呢

2019-12-20 21:46发布

在使用GSM模块的时候,需要通过串口与模块进行通信。

这其中既有命令反馈的接收,也有通信数据的接收,它们的数据长度和接收的延迟都不一样。

我目前的做法是:串口接收到第一个数据的时候开始计时,如果接收到下一个数据则将计时清零,如果超时则判别一段数据接收完毕

我感觉这样做的效率有点低,好像无法利用DMA,不知道大家有什么好的方式呢?

我看手册上说STM32的串口有总线闲时中断,不知道这个是什么状况,可否利用一下呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
wicy001
2019-12-22 22:30
伍师傅32 发表于 2015-2-13 16:04
使用了你的驱动,非常的感谢!

在接收处,我添加了需要接收的字符长度的判别。


每次接收完一帧数据, 字节个数到保存变量Rcv1Counter中。

对你说的出现不确定空闲中断,应该是发送端,发送数据有延迟造成的。可以增大串口接收缓冲,将想要数据全部接收下来,再判断。 另外可以改造成环形缓冲区。

对于数据的处理,请参考苹果猫的建议。  




一周热门 更多>