Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于按键去抖动 #14

Open
hw75320 opened this issue Jul 22, 2020 · 1 comment
Open

关于按键去抖动 #14

hw75320 opened this issue Jul 22, 2020 · 1 comment

Comments

@hw75320
Copy link

hw75320 commented Jul 22, 2020

源码写得精彩!拜读并仔细分析了一下,有个问题想请教。按键去抖需要3次按键值(间隔5ms)相同才能确认,但是在状态机处理中,感觉没有完全用去抖处理后的按键值进行判断处理,而是用上次保存或去抖处理后的按键值进行处理,这样对一些需要延时判断的按键动作判断会不会有影响?能否加一个按键去抖有效标志做辅助判断,一旦去抖完毕,此标志有效,后续状态机只有在标志有效情况下才取按键值进行处理,处理完后标志置为无效。不知我的理解是否正确?请指点,谢谢!

@GelinType
Copy link

我跟您的想法一样,这样做完全可行,但是我揣摩了一下大佬的代码,他想表达的意思应该是这样:
程序一直按照之前的按键状态处理任务,突然你改变状态了,但是由于抖动,为了准确无误我不能马上更新按键状态;继续保持原来的按键状态处理三次,就假装没看到按下/松开; 15ms后,更新按键状态,按照新的状态处理任务。
经典的:按键按下-->delay(15ms)-->确定按下了,处理任务;
经典的15ms完全占用了cpu,程序处于阻塞状态,什么也干不了(除了中断);大佬用状态机可以使得这15ms可以继续执行程序。
https://www.bilibili.com/video/BV16J411q7yv/?vd_source=8dcbe6e6956c69c45c67cc9ab703a2f5;这个视频下面的评论很精彩。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants