stm32定时器A==20的代码不执行

2019-07-14 13:45发布

最近呢,在做一块小板子,用到了一个rtc模块,为了不使整个程序阻塞起来我使用了一路基本定时器200ms定时读取rtc的值,原本没有什么问题,但是rtc内部带有一个温度传感器,我想顺便也读了吧,考虑到温度不需要实时更新,所以我在定时器中断里设了两个标志变量(定时器10ms中断一次)变量A是读取rtc的标志变量,变量B为温度读取的标志变量,两个变量都在中断函数中自加,并在while(1)中不停的查询两个变量的值,当A为20时,首先清除A的值为0并读取rtc的数据显示到液晶,当B为500时读取温度传感器的值并更新显示到液晶,现在出现的问题是,温度传感器的值正常更新,可是rtc的显示不走时,大体程序如下
while(1)
{
if A == 20
//更新rtc显示到液晶,且A清0
ifB == 50
//更新温度显示到液晶,且B清0
}
A,B兼在中断函数中自加,求解现在为什么只B==50这部分代码会被执行,A==20的代码不执行,调试发现A的值一直自加直到溢出,求解各位大大们,这是怎么回事
手机码字,不便之处请大家多多见谅
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
金小小涛
1楼-- · 2019-07-14 23:56
曹志静1314 发表于 2019-3-11 12:54
把关于A的函数贴出来看看。。

A的函数就是从rtc里读取时分秒年然后显示到显示,不太好发啊,这函数有400多行
曹志静1314
2楼-- · 2019-07-15 02:07
那你的意思就是A的值乱了,,
songxiansheng
3楼-- · 2019-07-15 05:29
 精彩回答 2  元偷偷看……
金小小涛
4楼-- · 2019-07-15 09:35
songxiansheng 发表于 2019-3-11 13:28
本帖最后由 wyy0313 于 2014-12-12 09:48 编辑

应该把判断定时“if A == 20”和“ifB == 50”放在中断里面,判断成立然后设置标志,主程序里判断标志然后执行,判断定时不放在中断就改为“if A >= 20”和“ifB >= 50”

对头,对头,您这个方法确实人效,原因是为何呢
songxiansheng
5楼-- · 2019-07-15 13:47
在主程序里执行更新温度显示到液晶时,定时器还在运行,等你运行完温度显示到液晶,再去判断A时,A已经大于20了。
金小小涛
6楼-- · 2019-07-15 19:26
调试时能看到A值会一直加,直到溢出,也就是说,if A==20这话不起作用了

一周热门 更多>