大家可曾听说过经典的3行代码按键扫描算法?
这个按键扫描算法我一直有在用,但都是零零散散的代码,去年在做项目的时候,为了考虑通用性,对其进行了进一步封装。
该按键驱动使用事件机制上报按键状态,并解耦具体的按键硬件结构,理论上可以支持轻触按键和自锁按键,支持无限按键数量,一次扫描即可获取所有的按键状态。
- 支持单击、双击、长按
- 自动消抖
- 可灵活配置中断以及适配低功耗场景
- 支持按需组合按键
- 可扩展支持矩阵键盘
- C99 编写,支持裸机和任意 OS
源代码资源地址:
https://github.com/murphyzhao/FlexibleButton
源代码中的按键扫描部分算法来自网络,仅有三行代码,非常精辟,值得学习,喜欢的朋友,不妨尝试用到自己的项目中,开源免费。算法来自网络,软件包也回馈网络,希望大家不再重复造轮子,以事半功倍。
还请各位大佬不吝指教,感谢
期待
因为 key 的译意太广泛了,在驱动里也多是 button driver,没见过 key driver
嗯,后面我镜像一份 源码包 过来
低功耗需要结合自己的低功耗特性,如果是 STM32 没有使用低功耗框架的话,可以接一路唤醒中断触发按键扫描启动
低功耗后,可以通过按键触发唤醒,这样本次的按键事件会丢掉(仅用于唤醒)
当时考虑过 Windows 的按键处理机制,但是不确定其用途,没有加上,如果有需求的话,后面这里的按键事件可以用更好的方式实现
一周热门 更多>