这个像是Modbus通讯
1,当串口接收到第1个数据时,启动定时器,并把数据保存到缓冲池中
2,接收到结束符,并且一定时间之后,如果再没接收到新的数据,就认为这是一个完整的数据帧
3,把缓冲池的数据复制到另一个缓冲池中,在主程序对另一个缓冲池的数据进行处理,因为有可能你在处理的时候,来了新的数据,缓冲池的数据结构就不一样了,读取出来的就不一定是原始的数据了
我一般用的是结构struct //串口Buffer结构
{
unsigned char buf_uart[32]; //留32个地址来存放串口的数据
unsigned char cnt_Byte; //接收到的字节数量
}Buffer0,Buffer1; //两个结构变量,让串口接收和保存不相互影响
接收到一个完整的数据帧之后,就直接
Buffer1=Buffer0;//把串口缓存的数据复制过来
memset(&Buffer0,0,sizeof(Buffer0));//清除串口接收缓冲
STM32有足够的能力处理串口这点小数据的
读取数据出来不就是很简单的事情吗?就是直接读取数组的数据而已,9#已经给出方法了
|