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