“Volatile”的版本间的差异
来自YFRobotwiki
第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; }
扩展阅读
更多建议和问题欢迎反馈至 YFRobot论坛