[转]单片机模块化程序: 单片机接收数据之空闲中断 - 杨奉武 - 博客园


1. 前言

假设单片机接收的数据为

0x55 0xAA 0x03 0x05 0x03 0x22 0x34 0x56 0x12 0x45 0xAA 0x55
0x55 0xAA作为数据的开头,中间是数据,0xAA 0x55作为数据的结尾
你会怎么做?

青铜这样做

用定时器判断接收到一条数据之后再去处理
思路:
如果接收到数据,控制空闲累加变量1ms做一次加1操作
串口如果一直接收数据则清零空闲时间累加变量
如果空闲累加变量累加到10,说明接收完了数据
串口中断:

定时器

主函数:

测试:

利用每条数据之间的空隙,来判断接收完一条数据以后再去做处理!

上面的程序还是不够完美,因为少于10ms间隙的数据是判断不出来的

黄金这样做

以上程序可以满足大部分简单的通信处理
主要思路就是判断接收完了一条数据以后再去处理.
但是以上程序并不是最优的程序
上面程序有个共同的通病,如果数据过来的比较快,处理数据慢,则就会丢失数据!

当前才到 黄金级别
后面我给大家准备了 最强王者和荣耀王者


---------------------
作者:杨奉武
来源:CNBLOGS
原文:https://www.cnblogs.com/yangfengwu/p/11669373.html
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

相关