OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2595|回复: 4

MultiButton-master开源库,能实现单击 双击 多击 长按 及前面的所有抬起 状态机

[复制链接]

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-7-31 23:05:53 | 显示全部楼层 |阅读模式
本帖最后由 nashui_sx 于 2020-3-29 18:47 编辑

0.stm32f103c8t6测试  按键PA0   (测试开发板 按下是低电平  平时高电平)
1.改造的MultiButton-master这个开源的按键库(https://github.com/0x1abin/MultiButton)首先感谢作者
2.用法简单说明  
   1)能实现下面的7中按键状态
        PRESS_DOWN = 0,       按下               
        PRESS_UP,                  抬起
        PRESS_REPEAT,          重复按  最大15
        SINGLE_CLICK,           单击
        DOUBLE_CLICK,          双击
        LONG_RRESS_START, 长按
   2)TICKS_INTERVAL 宏控制扫描周期,也就是多久调用一下状态机的驱动器button_ticks()函数  例子用的5ms 可以根据需要自己改间隔
   3)本例子采用滴答定时器中段函数驱动button_ticks()函数
   4)对接按键multi_button_init()
      multi_button_init---先初始化引脚
      button_init  (&btn1, read_button1_GPIO, 0);//按下时低电平    告诉状态机这个按键按下时候是什么电平  并给一个读取这个引脚的电平函数read_button1_GPIO   read_button1_GPIO函数返回PAin(8) 引脚状态
       u8 read_button1_GPIO(void)
      {
           return PAin(8);
      }

        然后回调函数方法用的时候,给不同的状态赋值回调函数,不用回调函数赋值为空
        button_attach(&btn1, PRESS_DOWN,       BTN1_PRESS_DOWN_Handler);        button_attach(&btn1, PRESS_UP,         BTN1_PRESS_UP_Handler);
        button_attach(&btn1, PRESS_REPEAT,     BTN1_PRESS_REPEAT_Handler);
        button_attach(&btn1, SINGLE_CLICK,     BTN1_SINGLE_Click_Handler);
        button_attach(&btn1, DOUBLE_CLICK,     BTN1_DOUBLE_Click_Handler);
        button_attach(&btn1, LONG_RRESS_START, BTN1_LONG_RRESS_START_Handler);
        button_attach(&btn1, LONG_PRESS_HOLD,  BTN1_LONG_PRESS_HOLD_Handler);
     5)使用时候调用下multi_button_init();
          就可以用按键值或者会回调函数处理按键了
          回调函数可以在不同任务重新赋值,达到,不同界面之类的实现你不同按键功能     按键值使用能无缝对接正点原子代码,回调函数更人性化
3.代码
按键开源库.rar (284.02 KB, 下载次数: 107)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-5-8
在线时间
25 小时
发表于 2019-8-1 11:19:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2019-9-25
在线时间
25 小时
发表于 2019-11-12 09:08:52 | 显示全部楼层
长按没有反应,怎么回事
回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
 楼主| 发表于 2019-11-12 10:08:10 | 显示全部楼层
chenkangshdu 发表于 2019-11-12 09:08
长按没有反应,怎么回事

我下载下来试了试可以的呀
回复 支持 反对

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2019-9-25
在线时间
25 小时
发表于 2019-11-12 11:02:27 | 显示全部楼层
chenkangshdu 发表于 2019-11-12 09:08
长按没有反应,怎么回事

解决了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 05:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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