硬汉嵌入式论坛

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

[GPIO] 分享个STM32H7的按键单击,双击和长按的例子

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2021-6-1 10:16:51 | 显示全部楼层 |阅读模式
经常有客户咨询双击支持,做个例子分享给大家,这个修改了bsp_key.c的驱动实现。
V7-单击,双击,长按(V1.1).7z (1.31MB)

image.png




回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2021-6-1 11:12:06 | 显示全部楼层
赞!!!!!!!!!!!!!!!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2021-6-2 10:39:09 | 显示全部楼层
282209507 发表于 2021-6-1 11:12
赞!!!!!!!!!!!!!!!

造福全人类。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-12-27 11:06:42 | 显示全部楼层
dddddddddddddd
回复

使用道具 举报

5

主题

132

回帖

147

积分

初级会员

积分
147
发表于 2021-12-27 11:41:19 | 显示全部楼层
有个开源按键组件挺好用的  https://github.com/0x1abin/MultiButton
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2021-12-27 15:41:53 | 显示全部楼层

不用回复,直接就能下载。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2021-12-27 15:42:32 | 显示全部楼层
无关风月 发表于 2021-12-27 11:41
有个开源按键组件挺好用的  https://github.com/0x1abin/MultiButton

谢谢分享,这里也有一个。

【按键检测-功能大全】基于硬汉程序思想-进行深度优化
https://www.armbbs.cn/forum.php? ... 6136&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-6-20 10:27:51 | 显示全部楼层
可以做个多击的实现么
回复

使用道具 举报

19

主题

62

回帖

119

积分

初级会员

积分
119
发表于 2022-6-20 20:05:56 | 显示全部楼层
我很多年前也写过一个全功能的按键程序,相对比较短小精悍

功能如下:
  支持最大64个按键(数量可配置)。
  支持按键消抖处理(可滤掉小于2个扫描周期的毛刺)。
  支持按键环形缓冲区(长度可配置)。
  支持4种不同按键模式:A:短按键 B:shift键 C:长按单发 D:长按连发。
  短按键 :短按直接输出键值。
  shift键 :点击后除了输出一次shift键的键值码外,还将后续所有其他按键的键值改为shift键值码
  长按连发 :长按一定时间后连续输出按键键值。
  长按单发 :长按一定时间后反码输出键值(仅一次)
  4种不同按键模式可相互叠加使用,所有按键功能都能并发输出。

https://github.com/mojinpan/key
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-9-29 14:42:28 | 显示全部楼层
代码里面的 bsp_GetKey2 好像没什么用吧,这个是不是冗余的代码,或者是有什么特殊用途上的考虑?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2022-9-29 16:14:51 | 显示全部楼层
maoxia007 发表于 2022-9-29 14:42
代码里面的 bsp_GetKey2 好像没什么用吧,这个是不是冗余的代码,或者是有什么特殊用途上的考虑?

这个没用,可以删掉。
回复

使用道具 举报

11

主题

30

回帖

63

积分

初级会员

积分
63
发表于 2022-10-28 17:38:29 | 显示全部楼层
s_tBtn[i].LongTime = KEY_LONG_TIME;                        /* 长按时间 0 表示不检测长按键事件 */
                s_tBtn[i].Count = KEY_FILTER_TIME / 2;                /* 计数器设置为滤波时间的一半 */

这里为什么要设置成滤波时间一半啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2022-10-29 00:40:06 | 显示全部楼层
小韩同学 发表于 2022-10-28 17:38
s_tBtn.LongTime = KEY_LONG_TIME;                        /* 长按时间 0 表示不检测长按键事件 */
                s_tBtn.Count = KEY_FILTE ...

设置了个初始值,没有特别含义
image.png


回复

使用道具 举报

32

主题

103

回帖

199

积分

高级会员

积分
199
发表于 2023-5-18 10:53:03 来自手机 | 显示全部楼层
请问有没有矩阵键盘的单机,双击,长按的例子呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2023-5-18 10:53:40 | 显示全部楼层
伊森亨特 发表于 2023-5-18 10:53
请问有没有矩阵键盘的单机,双击,长按的例子呢

矩阵键盘的没做。
回复

使用道具 举报

32

主题

103

回帖

199

积分

高级会员

积分
199
发表于 2023-11-7 08:58:54 | 显示全部楼层
这个是长按执行一次,还是长按连发
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2023-11-7 11:34:10 | 显示全部楼层
伊森亨特 发表于 2023-11-7 08:58
这个是长按执行一次,还是长按连发

默认没有开连发,连发需要手动使能。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 17:35 , Processed in 0.353905 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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