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