Volatile

来自YFRobotwiki
2017年9月13日 (三) 09:18Allblue讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

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论坛