一直以来都是通过按键消抖的方式去创建一个自己想要的按键功能函数 , 现在有了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唤醒一次 。