【困惑】对正点原子delay_ms的困惑

2019-07-20 19:47发布

我在主函数while(1)中利用正点原子提供的delay_ms控制led2灯每隔500ms toggle一次,当我不开启定时器3和定时器3中断时,led2正常按照程序执行,但是我开启了定时器3和定时器3中断时,为了方便观测我在定时器3的计数器更新中断中使led1 toggle,结果led2不能按照500ms 翻转一次,反而跟着led1的节奏闪烁,没有深入研究过正点原子的delay_ms,不知为何?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
大海兄
2019-07-22 04:58
我在大量的操作中找到解决方法了,对于使用正点原子的delay_ms(),同时使用定时器更新中断的问题。我再描述一下,当我设置每200ms进入一次中断服务函数,在中断服务函数中我将led2翻转,在主函数中,我调用正点原子的delay_ms,每1000ms翻转一次led1。
实验现象是:两个led同时以200ms为时间间隔翻转。delay_ms无效了
我发现,只要delay_ms中延时只要小于定时器中断设定的时间,延时函数就能正常工作,所以我写了一段程序,将大的延时时间分割成每一份小的,这样就能解决问题,但是至于为什么呢?我不想深究。

一周热门 更多>