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

2019-12-20 21:46发布

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

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

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

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

我看手册上说STM32的串口有总线闲时中断,不知道这个是什么状况,可否利用一下呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
伍师傅32
2019-12-22 20:30
wicy001 发表于 2015-2-10 10:34
在没有空闲中断的MCU,用定时器判断一帧。 但在stm32/stm8上,都有空闲中断,可以用空闲中断来判断一帧数据 ...

使用了你的驱动,非常的感谢!

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

因为在测试过程中,我发现GSM模块与单片机进行通信时数据并不是连续发送的。尤其是HTTP GET时,一次传输的数据量大,中间会出现许多次不确定的空闲中断。

一周热门 更多>