Volatile:修訂版本之間的差異

出自YFRobotwiki
跳轉到: 導覽搜尋
(以“=== volatile 关键字 === volatile是一个称为变量限定符的关键字,通常在变量的数据类型之前使用,以修改编译器和后续程序处理...”为内容创建页面)
 
 
(由1名用戶作出的2個中途修訂版本未被顯示)
第 39 行: 第 39 行:
 
<font color="orange" size="+1">'''扩展阅读'''</font>
 
<font color="orange" size="+1">'''扩展阅读'''</font>
  
:- [[AttachInterrupt]]
+
:- [[attachInterrupt()|attachInterrupt ]]
  
  

2017年9月13日 (三) 09:18的最新修訂版本

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