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条回答
ctwewer
1楼-- · 2019-07-15 22:34
你在定时器中断中进行ADC转换不合理,会出现ADC未结束,定时器又进入下一次中断。其实你只要在主程序中判断定时器送出的标志位,如果为1就清除并进行ADC转换,或者在定时器中断中启动ADC,在主函数中读取ADC值,实际上我们没有必要每次中断都去读取ADC值的。
报纸弟弟麦花
2楼-- · 2019-07-15 23:52
 精彩回答 2  元偷偷看……
金小小涛
3楼-- · 2019-07-16 05:16
嗯,嗯,感谢,我已经在各位的指导下,懂了,谢谢大家

一周热门 更多>