430串口中断方式接收字符串

2019-03-24 10:03发布

////接收一个字符////
      char Getchar1()                 //////函数定义???返回值为char
      {  
        while ((IFG1&UTXIFG0)==0);
        return RXBUF0;
      }
     //////接收字符串   
  #pragma vector=USART0RX_VECTOR
  __interrupt void UART0_RX(void)
     {
        int i;
        i=0;
        do
         {
           if(i<30)
             gRecieveBuffer[i++]=Getchar1();

           else
            break;

         }while (gRecieveBuffer[i-1]!='');

      }
烦劳各位大神  接收一个字符串长度未知(小于30) 无结束标识符 gRecieveBuffer初始值全为‘’
  若现在接收一个长度为10的字符串 程序这样写可以不   是在中断里跑了10次还是 跑进中断10次??程序 该怎样写呀 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
qinkaiabc
1楼-- · 2019-03-24 18:41
最好不要在中断程序中写这样的while语句
qinkaiabc
2楼-- · 2019-03-24 22:14
< :TI_MSP430_内容页_SA7 --> while (gRecieveBuffer!='')
国昊
3楼-- · 2019-03-25 01:51
 精彩回答 2  元偷偷看……
无帝老三
4楼-- · 2019-03-25 05:40
是进入中断10次还是在中断中连续接收了10个字节数据??
wojiaomt
5楼-- · 2019-03-25 08:22
如果你的主程序没有其它事件处理,并且你的代码能够解决好整串报文中各个字节的连续接收,那么中断就可以占用你想要的任意时间或者直至接收到你想要的长度或结束符;如果你的主程序还有其它事件要“同时”处理,或者采取在中断中连续接收的方式无法做到需要的接收成功率,那么中断还是尽量少占用时间的好。
我一般在串口中断中只处理一个字节的接收,以及对标识字符的判断(当然,中断代码耗费的周期要远低于串口波特率),对整串报文的解析处理还是放到主循环中去处理,这样也不会影响串口的接收。

一周热门 更多>

相关问题

    相关文章