硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6954|回复: 11
收起左侧

[例程下载] 按键检测代码 安富莱

[复制链接]

4

主题

17

回帖

4

积分

新手上路

积分
4
发表于 2016-8-26 11:32:58 | 显示全部楼层 |阅读模式
我移植了安富莱的按键检测驱动代码,做出了小小改动,同时也有疑问。
1. 改动:将键值读取代码放到主循环中,事实读取systick中全局变量,10ms循环,这样做主要是为了减小中断占用时间;
2. 疑问:我测试的按键,短按,松开,长按,均能识别,但是长按时,同样会读取到短按的键值,这样,在实际工作中,长按引起短按触发,导致单个按键两个独立功能(短按、长按)被多次调用,不符合实际需求,各位网友们,你们有优化过该代码吗?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2016-8-26 16:12:00 | 显示全部楼层
不优化,直接自己写个扫键,他的扫键实在是太烂了,又乱,又长
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-8-26 16:34:25 | 显示全部楼层
其实  他这个还是有很多优点的,扩展性强 ,一个接口可适用于所有按键的检测,就是这个长按时,短按被记录了这个bug,不是让人很满意。 哥们,你有什么好的方案吗,能否借鉴下?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2016-8-26 16:54:16 | 显示全部楼层
这个不需要修改源驱动,因为驱动的作用就是抓住每个状态的数据,你应该从应用的角度去修正。我们这个是按照电脑端键盘的处理机制来的。

对于你的使用情况,需要短按和长按的支持,应该满足你的应用。
1. 把你的短按不要用按下消息发送,而是用松手消息发送,这样的话,短按肯定是没问题的
2. 长按时在长按的消息里面做一个标志变量,如果进入了将标志变量置1,松手的时候检测下即可,用了长按就不要发送松手消息了。
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-8-26 17:12:28 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个不需要修改源驱动,因为驱动的作用就是抓住每个状态的数据,你应该从应用的角度去修正。我们这个是按照电脑端键盘的处理机制来的。

对于你的使用情况,需要短按和长按的支持,应该满足你的应用。
1. 把你的短按不要用按下消息发送,而是用松手消息发送,这样的话,短按肯定是 .. (2016-08-26 16:54) 
你说的很有道理,特别是从应用的角度来修正,赞同,非常感谢你的指导
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-8-26 17:12:58 | 显示全部楼层
你说的很有道理,特别是从应用的角度来修正,赞同,非常感谢你的指导
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-8-26 17:14:50 | 显示全部楼层
你说的很有道理,特别是从应用的角度来修正这句话,赞同,非常感谢你的指导
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-8-26 17:18:41 | 显示全部楼层
你说的很有道理,特别是从应用的角度来修正这句话,赞同,非常感谢你的指导
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2016-11-8 10:47:25 | 显示全部楼层
代码很长,不过很值得学习哦
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-4-15 09:48:24 | 显示全部楼层
376262974 发表于 2016-8-26 16:12
**** 作者被禁止或删除 内容自动屏蔽 ****

说明你只能一直在新手阶段
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-4-15 10:19:40 | 显示全部楼层
嵌入式小酸 发表于 2020-4-15 09:48
说明你只能一直在新手阶段

这个是从那个帖子里面复制过来的。

376262974 发表于 2016-8-26 16:12
**** 作者被禁止或删除 内容自动屏蔽 ****
回复

使用道具 举报

19

主题

150

回帖

207

积分

高级会员

积分
207
发表于 2020-5-25 10:45:49 | 显示全部楼层
我手上触摸MCU这个库,处理长按。串口调试的时候,能看见信息,也是显示短按状态的。处理方法和上面说的基本一致,分按下,松开处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 13:15 , Processed in 0.188064 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表