实际工程中,不能直接通过延时来消抖 ! 这里我们采用定时器来消抖,这也是内核处理消抖的一种方式。
目录
一、基本原理
1、延时消抖的弊端
按键按下的时候,存在抖动,延时消抖其实就是不管中间抖了多少下,全都忽略。这样的话,不确定因素太多。
- 延时设置的过短可能无法达到消抖的效果;
- 延时设置的过长可能会存在“第一次按键按下没反应,第二次才有反应”的情况。这就是延时过长导致第一次按下被无视。

2、定时器消抖原理
定时器消抖则是考虑了每一次的抖动。当 t1 时刻产生一次抖动时,我们启动一个定时器,定时器的周期为 10 ms(10ms已经基本覆盖了全部的抖动)

第二次检测到抖动的时候,此时按理说还没有触发中断,我们再次启动定时器,第一次和第二次用的同一个定时器,所以这次定时器启动时会重新计数。

如此往复,直到最后一次抖动出现之前,定时器在不断被刷新计数,始终没有触发过中断,即没有调用过中断服务函数。
当最后一次抖动出现时,说明抖动过程已经结束,此时会调用中

文章介绍了在实际工程中避免按键抖动问题的方法,指出延时消抖的不足,如设置不当可能导致反应延迟或忽视按键。然后详细阐述了定时器消抖的原理,通过启动定时器在每次按键抖动时重置计数,确保在抖动结束后才执行处理逻辑。同时,文章提供了按键中断和定时器中断的实现代码,以及按键和定时器的初始化步骤。
最低0.47元/天 解锁文章
519

被折叠的 条评论
为什么被折叠?



