Arduino串口中斷 Demo


serialEvent()作為串口中斷回調函數,需要注意的是,這里的中斷與硬件中斷有所不同,這個回調函數只會在loop()執行完后才會執行,所以在loop()里的程序不能寫成阻塞式的,只能寫成輪詢式的。

/*通過串口控制LED燈的亮滅,輸入o開燈,輸入f關燈*/
#define  led  13
char led_recv_status  = 0;
bool stringComplete = false;


void setup()
{
   pinMode(led,OUTPUT);
   digitalWrite(led, LOW);
   Serial.begin(115200);
   Serial.println("please select 'o' or 'f' to control led:");
}
void loop()
{
  if(stringComplete == true)
  {
     if(led_recv_status  == 'o')
     {
        digitalWrite(led, HIGH); //led on
        Serial.println("led on");
     }
     else if(led_recv_status  == 'f')
     {
        digitalWrite(led, LOW); //led off
        Serial.println("led off");
     }
    stringComplete = false;
  }
}


void serialEvent() 
{
  while (Serial.available()) 
  {
    led_recv_status = (char)Serial.read();
    stringComplete = true;
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM