串口接收的思路

在avr论坛上看到的 关于串口接收的方法  对项目有点帮助就记录下了      

感谢网友 AVRBBS 提供的方法

static unsigned char i;//定义一个静态变量,用于记录接收到那一个字节了。
switch (i) {
  case:0
    if (udr == 0xAA)  //收到第一个数据,判断是否为0XAA启动字节。
       i = i + 1;           //同步成功,增加变量 i ,进入下一步操作。
    break;
  case:1
     在这一步取第符长度,并把它保存在你定义的接收数组里面,在后面接收数据的时候用的到。
  case:2
     接收命令字节,存入到数组里面。
  。。。。。。。上面是大概流程,供你参考学习,下面的具体程序需要你自己完成。
  case:7
      判断帧停止位(0x55)、判断前一位校验是否正确,如果两项都成功了,那么做下面两件事:
      1、根据你的情况作出一定动作,或者打上某个标志,以标志你接收完成。
      2、记得把变量 i = 0复位。

原文地址:https://www.cnblogs.com/crazyxu/p/2058013.html