巧妙按键法,包含几乎所有可以实现的按键功能(单击,双击,N击,长按等功能)

       在做嵌入式产品时按键是最常用的输入信号了,按键多的时候我们可以实现很多的功能,有时候资源不够,但又需要实现较多的功能时,这就需要按键复用了,常常一个按键包含短按,长按,或者双击,N击,赋予不同的功能,这和具体项目有关。我们通常做的方法是识别I/O引脚电平,然后加以适当防抖处理,那么简单的按键单击功能就可以实现了。但当功能复杂时,这种处理方法就显得比较捉襟见肘了。比如:

1>想同时实现单击,和双击?

这时候就要加入一些时间检测。

2>同时短按和长按?

这时也要加入时间检测,在进一步,我想检测到长按时按键按下的过程中程序并没有一直停在按键检测循环里,而是一直在运行,识别到长按后,立刻执行相应动作。

3>同时实现短按,长按,以及多击(双击及以上)?

这个感觉就比较复杂了,其实原理都差不多,这里我们需要额外使用一个计数更新定时器,来作为时间检测。如果我们用的是操作系统的话,那么就可以创建一个按键扫描任务,每间隔固定时间扫描一次按键,然后获取按键值打包成消息发送出去。具体过程我不多说,原理很简单,主要是实现方法,大家看我的代码就会很明白了。









G_My_Key为全局变量。

如有描述不详或错误之处,大家一起讨论,谢谢!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值