多功能小巧超级无敌好用的按键开源函数

一直以来都是通过按键消抖的方式去创建一个自己想要的按键功能函数 , 现在有了mottibutton这个开源函数,就非常方便了 。 这个函数就开源在github开源仓库中  在,这里我贴出地址, 大家可以自行去下载下来liu2guang/MultiButton: A compact and easy to use event-driven button driver module. | 一个小巧易用的事件驱动按钮驱动模块. (github.com)

下载文件的按钮在这里 。 

那么就让我教大家如何简单使用这个文件吧 。 

大家把这个c文件添加进来 。然后把.h文件 包含在主函数文件上 

 

在主函数内需要调用的函数就这3个 , 然后我说下需要被调用的函数有哪些

这个函数被button_init函数所调用 , 为了初始化对应板子上的按键引脚 

 注意的是(所有需要用到的引脚都是需要自行初始化的)

大家自行添加各自的就行了 ;

中间这个变量名的作用就是对应按键按下去所需要的功能 , 这个变量在button.h文件中可以找到

大家想要什么功能这这里找就可以了

这个函数的功能也就是,按键按下后所需要做的操作 。 

    //按键回调函数
void button_callback(void *button)
{
            
    uint32_t butt =     get_button_event( (struct Button *)button);//得到对应按压事件
  //  printf("btn_0_cb\n");
    switch (butt)
    {
            
    
        case PRESS_DOWN:
            printf("btn_0_cb [FLEX_BTN_PRESS_DOWN]\r\n");
            break;
        case PRESS_UP:
            printf("btn_0_cb [FLEX_BTN_PRESS_UP]\r\n");
            break;
        case PRESS_REPEAT:
            printf("btn_0_cb [FLEX_BTN_PRESS_REPEAT]\r\n");
            break;
        case SINGLE_CLICK:
            printf("btn_0_cb [FLEX_BTN_PRESS_PRESS_REPEAT]\r\n");
            break;
        case DOUBLE_CLICK:
                    HAL_GPIO_TogglePin(GPIOB ,GPIO_PIN_0);
            printf("btn_0_cb [FLEX_BTN_PRESS_DOUBLE_CLICK]\r\n");
            break;
        case LONG_PRESS_START:
            printf("btn_0_cb [FLEX_BTN_PRESS_LONG_START]\r\n");
            break;
        case LONG_PRESS_HOLD:
            printf("btn_0_cb [FLEX_BTN_LONG_PRESS_HOLD]\r\n");
            break;
        case number_of_event:
            printf("btn_0_cb [FLEX_BTN_PRESS_number_of_event]\r\n");
            break;
        case NONE_PRESS:
            printf("btn_0_cb [FLEX_BTN_NONE_PRESS]\r\n");
            break;
    }
}

大家可以看出这里是对应的

最重要的 按键结构体初始化忘记说了 。 这个是通过按键结构体初始化一个新的按键

这样。 

最后一步就调用一次开始函数即可 。 

重要的一点是 : 

大家在测试的时候需要在while里每5ms调用一次这个函数 , 表示每5m唤醒一次 。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值