6552918 发表于 2022-8-22 17:52

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

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

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的时长可以修改的吗?

可以有个宏也需要改一下
页: [1]
查看完整版本: 【AT-START-WB415测评】移植MultiButton