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論壇