1
串口接收不定长度数据及数据粘包解析的实现
1
、如何让串口接收不定长度数据
想让
Stm32
串口接收不定长度数据,
这就需要我们开启串口空闲中断
(
IDLE
)
方式,
所谓串口空闲中断指的是
stm32
的数据总线在接收数据的过程中,
如果总
线在接收一个字节所需要的时间内没有再接收到数据,
单片机就会判定此时数据
已经接收完成了,
这时单片机会自动触发空闲中断
IDLE
标志位,
引发空闲中断,
我们只需要进入中断取数据就可以了。使用
IDLE
空闲中断我们就可以用串口接
收任意长度的数据了。
2
、串口接收不定长度数据的实现思路
我们实现串口接收不定长度数据的思路是:
首先我们要定义一个接收数据的
缓冲区,
一般用数组接收数据,
在串口初始化时要开启串口的空闲中断和接收中
断。
然后在有中断产生时,
我们需要在串口中断函数里判断是空闲中断还是正常
接收一个字节数据引起的接收中断,
如果是正常接收字节的中断,
那么我们需要
把接收到的这个字节数据存放到缓冲数组中,如果是
IDLE
空闲中断,表示串口
数据已经接收完成了&