dumon 发表于 2024-5-30 08:48:41

数码管的动态显示有用到delay_ms()函数,主要是数码的位与位切换时必须要用1个很小的延时,如果不加延时,数码码就会显示88888888。这里的延时是必须的,是利用人眼的视觉残留效应。

而32G单片机,我们可以用定时器来制作1个状态机,如按键的单击,长按,松开等。利用定时器的中断我们可以提高CPU的工作效率,设定好时间后我们可以定时去中断执行函数里查询是否满足执行条件。
如定时为1ms,我们可以10ms进入1个判定函数,100ms进入1个判定函数,1000ms进入1个判定函数。
而delay_ms()则是把我们的程序堵在这里了,必须要这个时间达到后才能继续下面的步骤。
但要注意的是定时一定要合理,如果太频繁进入中断(时间超级短),会导致主程序中的程序得不到执行,一直在循环定时函数中。这是我个人的理解。

ghost 发表于 2024-5-30 09:37:48

动态显示从来没有用到delay

soma 发表于 2024-5-30 11:36:59

一个MCU一直在干活一个边玩边干!
页: 1 2 [3]
查看完整版本: 同样是阻塞延时,不同人的理解是相反的?一度让我迷惑不解