善变的不只是女人,还有volatile ---偷来的标题名

下面代码包括 2 个函数,第一个函数是中断服务程序用于从温度传感器中读 取数据,第二个函数比较温度是否一致。它是否包括错误?如有,该如何修正?

 1 static int iTemperatures[2];  2  3 void __IRQ__vReadTemperatures(void)  4  {  5         iTemperatures[0] = /* Get Temperature from Sensor */ 6         iTemperatures[1] = /* Get Temperature from Sensor */ 7  }  8     9  void main(void) 10  { 11         while (1) 12  { 13         if (iTemperatures[0]  != iTemperatures[1]) 14         /* Alarm */15  } 16   }

 

 

错误的主要原因是因为,volatile

(中断isr中引用的变量多线程中共用的变量硬件会更改的变量)都是编译器在编译时无法预知的更改,此时应用使用volatile告诉编译器这个变量属于这种(可变的、易变的)情况。

转载于:https://my.oschina.net/Joran/blog/600101

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值