原标题:单片机串口接收不定长数据的通用方法
我之前写过一篇文章关于STM32单片机接收不定长数据的方法,这篇文章可以在瑞生网(https://Mrs.Pub)搜索关键字“不定长”看到,不过...
这个只是针对某些STM32单片机的方法,比如F1系列的就可以使用,然而...
我在后续使用其它STM32系列的单片机时,发现这个方法不能用,比如L0系列的,我用IDLE判断,总是还没有接收完一帧数据,就会发生IDLE中断,于是...
我只能用下面的通用方法来解决了,这个通用的方法,其实原理和使用IDLE的原理一样:
接收完一个字节以后,如果超过了一定的时间,就认为是接收完一帧数据了。首先...
我们要知道,串口是接收一个字节,就会发生一次中断,如果一帧数据包含10个字节,就会发生10次中断。在接收一个字节以后,会紧跟着接收下一个字节,如果时间超了一定值,就代表一帧数据已经发完了。
下面,我分别用STM32和51单片机的代码来演示一下这个通用代码的实现。
1、STM32(以STM32L0系列为例)
串口中断函数:
voidLPUART1_IRQHandler( void) // 低功耗串口1中断服务函数{if(__HAL_UART_GET_FLAG(&hlpuart1,