Volatile

出自YFRobotwiki
在2017年9月13日 (三) 09:08由Allblue對話 | 貢獻所做的修訂版本

(差異) ←上個修訂 | 最新修訂 (差異) | 下一修訂→ (差異)
跳轉到: 導覽搜尋

volatile 關鍵字

volatile是一個稱為變量限定符的關鍵字,通常在變量的數據類型之前使用,以修改編譯器和後續程序處理變量的方式。

聲明變量volatile是編譯器的指令。編譯器是將C / C ++代碼轉換為機器代碼的軟件,這是Arduino中Atmega芯片的真實說明。

具體來說,它指示編譯器從RAM中加載變量,而不是存儲寄存器,存儲寄存器是存儲和操作程序變量的臨時內存位置。在某些條件下,存儲在寄存器中的變量的值可能不準確。

當變量的值可以被超出其出現的代碼段的控制之類的東西(如同時執行的線程)改變時,變量應該被聲明為volatile。在Arduino中,唯一可能發生的地方是與中斷相關的代碼部分,稱為中斷服務程序。


示例

// toggles LED when interrupt pin changes state

int pin = 13;
volatile int state = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}

void loop()
{
  digitalWrite(pin, state);
}

void blink()
{
  state = !state;
}


擴展閱讀

- AttachInterrupt




返回Arduino語法參考列表

更多建議和問題歡迎反饋至 YFRobot論壇