原子哥delay函数和通用定时器冲突

2019-07-20 14:45发布

今天用通用定时器写了个定时,定时时间为500ms,在溢出中断里加了一个gpio翻转,讲道理应该是输出方波的。但是,我在main函数里还加了一个原子哥写的delay函数,delay_ms(5000)。
奇怪的事情来了。
如果通用定时器溢出中断中只有gpio翻转,可以偶尔输出正常方波,但是正常的周期数不会超过5个。剩下的时间要么全高要么全低。
如果通用定时器溢出中断里加上别的东西,比如定义一个变量,则完全冲突,方波周期完全变成由delay函数控制,也就是说delay的过程中,定时器中断是等待的。

经过测试,TIM3可以和delay一起用,但是TIM4和TIM5都不行。TIM3和TIM4、TIM5的中断优先级都一样。
求问这是怎么一回事?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。