你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

按键释放需要消抖吗  

[复制链接]
ljz1992 提问时间:2018-6-8 14:44 /
阅读主题, 点击返回1楼
收藏 评论38 发布时间:2018-6-8 14:44
38个回答
ljz1992 回答时间:2018-6-8 18:40:55
zhao.zhao 发表于 2018-6-8 16:13
我一般用定时检测,没有消抖的问题了。按键在释放时也会经历一个和按下时相同的消抖过程,既然按下时已经消 ...

定时检测应该也算是在消抖吧。按键每次按下的时间一般都要大于100ms的,我现在是每10ms判断一次,既能保证按键操作不会丢失,又能节省mcu的消耗。
ljz1992 回答时间:2018-6-8 18:47:50
本帖最后由 ljz1992 于 2018-6-8 18:48 编辑
与龙共舞 发表于 2018-6-8 15:14
其实我看原子的 在按下 释放 都没消抖
他的做法: 不单单是按键GPIO的中断线 他还用一个定时器去实时检测  ...

如果没有硬件消抖,软件消抖应该是不能少的吧,你所说的原子的我不太清楚(下去我去了解一下),但是我认为他肯定也会在隔几毫秒后再检测一次按键的。如果同时使用了中断线和定时器实时检测感觉太消耗片上资源了,也只适合开发板上单例程学习,不适合拿到工程上使用吧。不过双击这个功能我倒是没有考虑到,也可以给我的程序补充上去
ljz1992 回答时间:2018-6-8 18:52:41
wenyangzeng 发表于 2018-6-8 16:02
如果需要利用按键释放事件执行某个操作,应该需要释放消抖。

我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。
wenyangzeng 回答时间:2018-6-8 20:43:12
ljz1992 发表于 2018-6-8 18:52
我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。 ...

不一定,假设现在是按键闭合期间,这时出现抖动,会误判为按键释放。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

七哥 回答时间:2018-6-9 00:24:16
ljz1992 发表于 2018-6-8 18:52
我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。 ...

释放需不需要消抖,得看机制。

如果程序按下消抖,是用的延时死等,取键值后紧跟着执行键码对应的操作。这种情况抬起不需要消抖。

像电脑标准行列矩阵键盘是需要消抖的,因为按下和抬起都要发键值。
因为它是循环检测,检测一次把所有键位都检测一遍,不管有多少键按下,都会记住相应状态。
根据两次状态的不同,来判断是哪个键,是抬起还是按下操作。第一、二次循环,发现有键状态变化,那么第三次检测到与第二次相同,方才认为是有效按下或抬起来动作。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

feixiang20 回答时间:2018-6-9 00:54:10
不需要,重新识别的时候回去自动去除,不知道在检测到按键释放后,是不是有几ms的延时,抖动消失后再处理

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

focusfiga 回答时间:2018-6-9 07:53:51
软件的处理模式就是等按键释放就可以了.

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

vilsenma 回答时间:2018-6-9 09:05:55
不需要的
ljz1992 回答时间:2018-6-9 10:01:47
wenyangzeng 发表于 2018-6-8 20:43
不一定,假设现在是按键闭合期间,这时出现抖动,会误判为按键释放。

好像还没有看到过你这种说法。一般来说抖动都是出现在按下和释放的过程,中间的一段时间都稳定的闭合期间,这个期间没有看到相关资料说是会出现抖动的
forget121 回答时间:2018-6-9 10:13:11
你的软件都是做了短按,长按,,这个以按下持续如果有释放来判断机制,
做了按下消抖,
释放的消抖就没有必要了。如果做释放消抖还影响你的连接模式。类似双击,三击、五击这些,可以做下这些功能,你就对这个按键功能非常了解了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

CC4 回答时间:2018-6-9 10:16:04
我觉得要看怎么使用了。比如说,使用中断,双边沿触发。
当按下的时候,会触发一次,这个时候要处理消抖,完成后更新按键状态
如果不松开,是不会有上升沿中断的。
如果松开后,会产生上升沿中断,这个时候,只要比较下按键状态,就可以了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wujique 回答时间:2018-6-9 11:40:06
wujique 回答时间:2018-6-9 11:50:50
对按键,个人有一下看法:
1 分驱动和应用。按键扫描就是驱动;长按短按连击都是应用,两者要分开。
  为什么呢?今天你要3连,明天要9连击,怎么改?今天1秒算长按,明天老板说做成2秒吧,你打算改底层驱动?
2 驱动,也就是按键扫描,只做扫描,有变化,就识别。你说要不要做松开防抖?

3 Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。对于按键来说:你可以做长按,但是怎么长按我不管;我支持你做连击,你想多少连是你的事。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

ljz1992 回答时间:2018-6-9 14:40:15
huangxuejia-292 发表于 2018-6-9 11:40
https://www.stmcu.org.cn/module/forum/thread-615126-1-1.html
以前发的帖子,请参考。

非常感谢分享,下载学习一下。
ljz1992 回答时间:2018-6-9 14:46:35
huangxuejia-292 发表于 2018-6-9 11:50
对按键,个人有一下看法:
1 分驱动和应用。按键扫描就是驱动;长按短按连击都是应用,两者要分开。
  为什 ...

功力不够,看不懂。也是处于刚学习的地步,对于驱动和应用也不知道如何区分,更不知道如何去将两者划分开来。至于机制和策略更不懂了,还有好多要学习的啊!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版