OpenEdv-开源电子网

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

在定时器0中断函数内i++,主程序中运行一段时间i不累加

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-12-16
在线时间
8 小时
发表于 2017-3-12 15:58:18 | 显示全部楼层 |阅读模式
10金钱
void timer(void) interrupt 1
{                                                                                                          
        TH0=0x3c;
        TL0=0xb0;

        i++;
}

主程序中:
if(i==1200)                                 //1分钟
{
FAN_Relay=1;
i=0;
j++;       
}

j有时累加到3或者4后值不变,不累加了

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

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-12-16
在线时间
8 小时
 楼主| 发表于 2017-3-12 15:59:59 | 显示全部楼层
然后按按钮停止中断再重新开启中断定时,i能累加到5,以此类推
回复

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2017-3-12 16:48:27 | 显示全部楼层
单片机复位了吧,可能是因为复位导致的,硬件问题
回复

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2017-3-12 16:49:09 | 显示全部楼层
周亚龙 发表于 2017-3-12 16:48
单片机复位了吧,可能是因为复位导致的,硬件问题

你的i定义为什么类型的
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-12-16
在线时间
8 小时
 楼主| 发表于 2017-3-12 16:54:44 | 显示全部楼层
周亚龙 发表于 2017-3-12 16:49
你的i定义为什么类型的

unsigned int
回复

使用道具 举报

5

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
780
金钱
780
注册时间
2016-5-28
在线时间
64 小时
发表于 2017-3-12 23:34:16 | 显示全部楼层
问题表述不太清楚:
j有时累加到3或者4后值不变,不累加了,那说明i还是有计数的,至少发生了几次从0到1200的操作。
把对定时器初始化和变量初始化部分代码也贴出来吧。
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-3-7
在线时间
13 小时
发表于 2017-3-13 14:15:05 | 显示全部楼层
TIME 有没有重装?
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-12-16
在线时间
8 小时
 楼主| 发表于 2017-3-15 21:14:18 | 显示全部楼层
jim123 发表于 2017-3-13 14:15
TIME 有没有重装?

谢谢帮助。已经解决了。原因是主程序的运行时间超过了50ms,导致i比1200大,不进入if语句,i>=1200 就能解决了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 22:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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