[活动专区]

【AT-START-WB415测评】移植MultiButton

[复制链接]
546|8
手机看帖
扫描二维码
随时随地手机跟帖
6552918|  楼主 | 2022-8-22 17:52 | 显示全部楼层 |阅读模式
MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。
移植过程如下
1 先申请按键结构
1.png
2 初始化按键IO
2.png
3 初始化按键对象,绑定按键的GPIO电平读取接口read_button_GPIO () ,后一个参数设置有效触发电平
4 注册按键事件
5  启动按键
3.png
6 设置一个5ms间隔循环调用后台处理函数button_ticks(),这里可以用定时器做时间基准方式,也可以查询延时的方式,我这里用查询方式展示,后续会改为定时器方式
4.png
注意事项
1 在初始化按键对象函数button_init(&btn1,read_button_GPIO, 0, btn1_id)时,需要调用IO读取函数,需要根据实际应用自己实现。
5.png
2 按键事件
6.png
按键事件处理函数(字符串打印函数,自行实现)
7.png
实现效果
8.png
实际使用时,还要去看下multi_button.h里的两个宏定义,TICKS_INTERVAL默认是5即5mS,这个与它实例间隔5mS是对应的。DEBOUNCE_TICKS默认是3最大是8,用于按键消抖。长按和短按的时间靠LONG_TICKS和SHORT_TICKS设置或者说优化
9.png
附件内有实例源码,在main函数内添加如下函数即可
10.png


MultiButton.zip

7.63 KB

使用特权

评论回复
geraldbetty| | 2022-12-5 20:59 | 显示全部楼层
怎么能把按键和菜单结合起来?              

使用特权

评论回复
6552918|  楼主 | 2022-12-5 21:19 | 显示全部楼层
geraldbetty 发表于 2022-12-5 20:59
怎么能把按键和菜单结合起来?

可以找个菜单框架,对接一下控制逻辑就行

使用特权

评论回复
usysm| | 2022-12-6 13:49 | 显示全部楼层
为什么注册了事件,不能获取到长按呢?

使用特权

评论回复
6552918|  楼主 | 2022-12-6 14:09 | 显示全部楼层
usysm 发表于 2022-12-6 13:49
为什么注册了事件,不能获取到长按呢?

如果短按正常,长按进行了注册并添加了回调函数,就应该可以才对

使用特权

评论回复
sheflynn| | 2022-12-6 15:11 | 显示全部楼层
这个按键的次数统计怎么最大才是16呢?

使用特权

评论回复
6552918|  楼主 | 2022-12-6 15:17 | 显示全部楼层
sheflynn 发表于 2022-12-6 15:11
这个按键的次数统计怎么最大才是16呢?

主要是调用button_ticks()间隔有关,和次数关系不大

使用特权

评论回复
biechedan| | 2022-12-6 16:30 | 显示全部楼层
这个5ms的时长可以修改的吗?              

使用特权

评论回复
6552918|  楼主 | 2022-12-6 17:14 | 显示全部楼层
biechedan 发表于 2022-12-6 16:30
这个5ms的时长可以修改的吗?

可以  有个宏也需要改一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

100

主题

1183

帖子

5

粉丝