OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 213|回复: 2

请问如何在主程序中读取中断中改变全局变量值

[复制链接]

  离线 

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-4-15
在线时间
3 小时
发表于 2017-12-22 11:26:47 | 显示全部楼层 |阅读模式
正点原子公众号
请问如何在主程序中读取中断中改变全局变量值?
例如
u16 var;
void isr(void){
      var++;
}
void main(void){
     di();//关总中断
     u16 tmp = var;
     ei();//开总中断
     if(tmp>=1000){
           var=0;
           //其他事情
     }
}
请问总中断一关一开有没有必要?


回复

使用道具 举报

  离线 

16

主题

406

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259
金钱
1259
注册时间
2014-12-20
在线时间
526 小时
发表于 2017-12-22 11:39:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

56

主题

337

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1866
金钱
1866
注册时间
2012-10-17
在线时间
442 小时
发表于 2017-12-27 16:58:22 | 显示全部楼层
本帖最后由 civic7366 于 2017-12-27 17:03 编辑

有喔...我之前有一個BUG就是這樣產生的...

也是在中斷中修改全域變數, 然後在主程序中作一些判斷&運算

if(XX>100) //先過了判斷式
{
    進來後發生中斷...XX>100 不成立了    這邊對XX的處理都錯了
}
else
{

}

只能在if上下開關中斷...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-4-20 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */