6753|13

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

中断处理程序中变量无法累加??? [复制链接]

@far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
  /* Toggle GPIO PIN5 */
  //unsigned char test1;
  PB_ODR ^= 0x01;
  TIM4_SR&=0xF0;
  test1++;
    return;
}

变量test1每次进入中断都变成0;在中断处理时已经加1了啊,
试了很多种方法,都没用。请大家指正错在哪???
此帖出自stm32/stm8论坛

最新回复

                                 上面已经有人提醒了,用volatile来修饰变量定义  详情 回复 发表于 2010-9-23 11:04
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
test1是全局变量或静态变量吗?
中断服务程序里用return可以吗?
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 test1是全局变量,在main.h文件中定义,然后在extern.h文件中定义为extern u8;
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 中断里面不能有返回值的
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 中断里面加return编译应该都通不过吧
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 有没有return都一样,编译通过,在仿真下查看的变量值。变量是全局变量,只是在中断里处理一下,
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 试下用volatile去定义,防止编译器给优化掉
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 试一下,把中断向量表interrup.c 与中断子程序分开,应该可以解决这个问题。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
在中断函数中test1没有被调用,肯定是被编译器优化了,你可以尝试看一下汇编代码。
试下用volatile去定义,防止编译器给优化掉。
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 我以前用全局变量和静态变量都可以的
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 同意9楼
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 已解决,STVD的问题,单步调试时有时候变量监视有问题,全速运行时测试可以累加。升到4.1.3还是这样。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 变量设置为全局部变量就可以
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 上面已经有人提醒了,用volatile来修饰变量定义
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表