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条回答
wojiaomt
2019-03-25 08:22
如果你的主程序没有其它事件处理,并且你的代码能够解决好整串报文中各个字节的连续接收,那么中断就可以占用你想要的任意时间或者直至接收到你想要的长度或结束符;如果你的主程序还有其它事件要“同时”处理,或者采取在中断中连续接收的方式无法做到需要的接收成功率,那么中断还是尽量少占用时间的好。
我一般在串口中断中只处理一个字节的接收,以及对标识字符的判断(当然,中断代码耗费的周期要远低于串口波特率),对整串报文的解析处理还是放到主循环中去处理,这样也不会影响串口的接收。

一周热门 更多>

相关问题

    相关文章