M430 UART0 接收数据

2019-03-24 10:53发布

最近在研究430 看到有人写的一段代码,为了接收GPS的数据,使用串口中断接收,部分代码如下:
if(global_temp_data_num==0)   //获取"GG"标志
        {
          if(RXBUF0=='G')
          {
            global_temp_data[0]='G';
            global_temp_data_num=1;
          }
          else global_temp_data_num=0;
        }
        else if(global_temp_data_num==1)
        {
          if(RXBUF0=='G')
          {
            global_temp_data[1]='G';
            global_temp_data_num=2;
          }
          else global_temp_data_num=0;
        }//"GG"标志获取完成
        else
        {
          global_temp_data[global_temp_data_num]=RXBUF0;
          global_temp_data_num++;
        }

global_temp_data_num 接收前初始化为0.


搞不明白的是,global_temp_data[0]里面不可能存入数据嘛,那么
if(RXBUF0=='G')
          {
            global_temp_data[0]='G';
            global_temp_data_num=1;
          }

怎么可能成立,请各位大侠求助,实在想不通了 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
qiushenghua
2019-03-24 22:06
< :TI_MSP430_内容页_SA7 --> 楼主是不是很久没有接触C语言,啥东西都忘光了?
回想一下=和==的区别就知道了
=是赋值语句,==是判断语句
if(global_temp_data_num==0)   //当global_temp_data_num=0时
        {
          if(RXBUF0=='G')//如果收到G
          {
            global_temp_data[0]='G';//那么存入global_temp_data[0]
            global_temp_data_num=1; //再让global_temp_data_num=1
          }
          else global_temp_data_num=0;//如果收到的不是G,那么让global_temp_data_num回到0
        }
        else if(global_temp_data_num==1)//如果global_temp_data_num=1,说明之前接收到一个G了,这是G后面的一个字符
        {
          if(RXBUF0=='G')//判断第二个收到的是不是G
          {
            global_temp_data[1]='G';//如果还是G,那赋值进global_temp_data[1]
            global_temp_data_num=2; //同时让global_temp_data_num变成2
          }
          else global_temp_data_num=0;//如果收到的第二个字符不是G,那么说明不符合开始条件,回到global_temp_data_num=0重新接收
        }//"GG"标志获取完成
        else//收完GG开始标志之后,收到其他的字符
        {
          global_temp_data[global_temp_data_num]=RXBUF0;把字符放进global_temp_data[global_temp_data_num]里
          global_temp_data_num++;//让global_temp_data_num比原来多1,好存放下一个字符
        }

一周热门 更多>

相关问题

    相关文章