登录发现更多内容
首页
分类
发帖
账号
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
首页
Portal
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
产品教程
BBS
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
开发资料
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
样品购买
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
IoT云平台
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
GitHub
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
技术博客
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
搜索
搜索
热搜:
LoRa
ESP8266
安信可
本版
帖子
用户
请
登录
后使用快捷导航
没有账号?
立即注册
每日签到
任务
广播
导读
排行榜
设置
我的收藏
退出
8
1
0
首页
技术杂谈
›
按键长按和连击检测
返回列表
按键长按和连击检测
[ 复制链接 ]
发布帖子
hdydy
论坛元老
105
主题
355
回帖
1万
积分
论坛元老
论坛元老, 积分 12899, 距离下一级还需 9987100 积分
论坛元老, 积分 12899, 距离下一级还需 9987100 积分
积分
12899
私信
8人留言
楼主
技术杂谈
1851
8
2024-1-13 22:43:53
``` void key_scan_task(uint8_t key_pin) { uint32_t timer_cnt = 0, countdown = 0; uint32_t click_cnt = 0;// 短按次数 bool long_press = false; // 10ms定时扫描 #define JITTER_CNT 5 // 抖动时间,大约50ms #define LONG_PRESS_CNT 100 // 长按检测时间,长按不参与前后连击检测 #define COUNTDOWN_INIT 20 // 连击检测倒计时 bflb_gpio_init(gpio, key_pin, GPIO_INPUT | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_0); while(1) { if(bflb_gpio_read(gpio, key_pin)) {// 高电平时计数 if(timer_cnt < 10000000) timer_cnt++;// 避免一直长按时溢出 } else {// 低电平时判断状态 if(countdown > 0) countdown--;// 倒计时 if(timer_cnt >= LONG_PRESS_CNT) long_press = true; else if(timer_cnt >= JITTER_CNT) { click_cnt++; countdown = COUNTDOWN_INIT;// 重新倒计时 } // 状态输出 if(long_press) {// 长按 printf("long_press:%d\r\n", timer_cnt); long_press = false; click_cnt = countdown = 0;// 重置,丢弃前面的连击 } else if(click_cnt > 0 && countdown == 0) {// 点击1次或多次 printf("%d click\r\n", click_cnt); click_cnt = 0; } // else {} // 未按键,抖动,连击检测倒计时未结束 timer_cnt = 0;// 重置 } vTaskDelay(10); } } ``` 定时扫描GPIO的电平,统计高电平的持续时间,如果超过特定值则为长按,小于特定值为按键抖动,介于两个特定值之间为短按,短按后开启倒计时,在指定时间内再次短按,判断为连击 利用M61-32板子上的烧录键进行测试 ``` xTaskCreate(key_scan_task, "key_scan_task", 1024, GPIO_PIN_2, 16, &key_scan_task_hd); ``` 
点赞
1
收藏
0
淘帖
0
────
1
人觉得很赞
────
回复
使用道具
举报
8 回复
电梯直达
正序浏览
倒序浏览
正序浏览
沙发
WT_0213
回复
使用道具
举报
2024-1-13 23:29:34
回复
评论
使用道具
举报
板凳
san
回复
使用道具
举报
2024-1-13 23:44:46
赞
回复
评论
使用道具
举报
地板
1084504793
回复
使用道具
举报
2024-1-14 08:11:58
赞
回复
评论
使用道具
举报
5
#
timo
回复
使用道具
举报
2024-1-14 10:15:08
赞
回复
评论
使用道具
举报
6
#
干簧管
回复
使用道具
举报
2024-1-14 20:21:14
回复
评论
使用道具
举报
7
#
曹县
回复
使用道具
举报
2024-1-14 20:52:19
回复
评论
使用道具
举报
8
#
bzhou830
回复
使用道具
举报
2024-1-15 08:54:30
很棒,学习学习
回复
评论
使用道具
举报
选择去发光,而不是被照亮
9
#
爱笑
回复
使用道具
举报
2024-1-15 09:29:19
回复
评论
使用道具
举报
用心做好保姆工作
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
手机登录
点评
高级模式
本版积分规则
回帖并转播
回帖后跳转到最后一页
返回
今日推荐
【电子DIY作品】默语小智管家(Ai-WV02-32S)
【电子DIY作品】MCP 网关 + Ai-WV01-32S 让 AI 语音助手控制局域
MQTT 入门与实战:从协议原理到两块 WB2 对联
九章验证板——智能家居项目
Ai-Thinker Skills 正式发布!快来试试!
九章开发板疑问
🔌手把手!1T1R 毫米波测距演示怎么跑?接入与 Python 环境配置
ONELAB开发套件常见问题Q&A:距离、角度、速度、距离门设置
【九章MCP验证板】开发环境配置教程
AI-WV02-32S 铁板烧焊接翻车
热帖排行
【电子DIY作品】默语小智管家(Ai-WV02-32S)
【电子DIY作品】MCP 网关 + Ai-WV01-32S 让 AI 语音助手控制局域
Ai-WB2 BLE HID 三合一复合设备
不敢想象,这个项目的模块达到50+的时候,就不用啃芯片手册了
从零理解 HTTP · TCP · TLS:用 WB2 芯片访问心知天气
MQTT 入门与实战:从协议原理到两块 WB2 对联
九章验证板——智能家居项目
VC01的模块,在语音平台设置了串口功能,但是没起作用
统计信息
会员数: 31215 个
话题数: 42290 篇
首页
分类
我的