OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2769|回复: 6

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

[复制链接]

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-4-15
在线时间
3 小时
发表于 2017-12-22 11:29:22 | 显示全部楼层 |阅读模式

请问如何在主程序中读取中断中改变全局变量值?
例如
u16 var;
void isr(void){
      var++;
}
void main(void){
     di();//关总中断
     u16 tmp = var;
     ei();//开总中断
     if(tmp>=1000){
           var=0;
           //其他事情
     }
}
请问总中断一关一开有没有必要?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2017-12-22 12:05:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-4-15
在线时间
3 小时
 楼主| 发表于 2017-12-22 12:57:34 | 显示全部楼层

正点原子公众号 请问如何在主程序中读取中断中改变全局变量值?
例如
u16 var;
void isr(void){
      var++;
}
void main(void){
     di();//关总中断
     u16 tmp = var;
     ei();//开总中断
     if(tmp>=1000){
           var=0;
           //其他事情
     }
}
请问总中断一关一开有没有必要?
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-4-15
在线时间
3 小时
 楼主| 发表于 2017-12-22 13:00:18 | 显示全部楼层
如果是8位的单片机就有必要,不知道STM32需要吗
回复 支持 反对

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2017-12-22 13:16:16 | 显示全部楼层
没看懂什么意思
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-22 14:56:34 | 显示全部楼层
养成关闭中断来操作共享变量,是个好习惯.
此处有没有必要,还要具体事情,具体分析.
如是8位机真还有必要.
32位机,中断里面写,大循环读取,问题不大.
个人意见,有待验证.
回复 支持 反对

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-12-23 04:23:15 来自手机 | 显示全部楼层
只做读取问题不大,修改容易出问题
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 05:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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