xiajintaord 发表于 2018-6-8 17:01
按键的消抖分为两种:
1、硬件消抖;
2、软件消抖
电容有点效果,但RS触发器消抖不靠谱,还是软件消抖号
按键消抖原理很简单,但很有趣,做得不好,会把程序逻辑搞得很复杂,大家有什么好的办法?
我是用个定时器,每间隔1-50mS检测一次,不用延迟,直接读键值,就达到消抖目的了。
huangxuejia-292 发表于 2018-6-9 11:50
对按键,个人有一下看法:
1 分驱动和应用。按键扫描就是驱动;长按短按连击都是应用,两者要分开。
为什 ...
从开发的角度来说,确实应该是这样的。
驱动只管正确识别按键和消抖处理。总不能让应用自己来消抖吧?
select326 发表于 2018-6-11 11:28
从开发的角度来说,确实应该是这样的。
驱动只管正确识别按键和消抖处理。总不能让应用自己来消抖吧? ...
准确的说法应该是:
驱动只管正确识别按键状态变化,当然包括消抖处理。
1 长按短按链接
2 按键是确认还是取消键(只上送按键位置编码)
这些都不用管。
否则大一点的代码,当APP和驱动分离的时候,驱动就会跟着用户需求修改。
不需要
我处理按键,特别是那种一个按键多种功能,比如说:按一下,按3s, 按6s..做不同的功能,喜欢采用边沿中断加定时的功能的,产生中断开始每秒钟的定时,检查按键状态,来区别是 什么状态,我这样处理释放了就不需要处理
一般来说并不需要,原因是松开按键的抖动,假如被检测到按键按下的话,这时候会经历按下消抖过程。后续的状态完全松开了,按键按下为假。不会产生误检测的。
104电容硬件滤波,按下后循环查询是否松开, 我是这么干的!!:D
MrJiu 发表于 2018-6-8 14:56
释放不需要。。。因为再次识别的时候,会被识别消抖去除!!!
老铁一语惊醒梦中人,感谢感谢:P