Volatile
從 YFRobotwiki
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;
}
擴展閱讀
更多建議和問題歡迎反饋至 YFRobot論壇