“Volatile”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
(以“=== volatile 关键字 === volatile是一个称为变量限定符的关键字,通常在变量的数据类型之前使用,以修改编译器和后续程序处理...”为内容创建页面)
 
第39行: 第39行:
 
<font color="orange" size="+1">'''扩展阅读'''</font>
 
<font color="orange" size="+1">'''扩展阅读'''</font>
  
:- [[AttachInterrupt]]
+
:- [[attachInterrupt()|AttachInterrupt]]
  
  

2017年9月13日 (三) 09:09的版本

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