kw_btn库说明
本库主要满足嵌入式按键需求,集成了常用的按键响应事件:高电平、低电平、上升沿、下降沿、单击、双击、长按键事件。可以裸机运行,也可以配合实时操作系统运行。
本库开源连接地址:连接
实现思路
本库采用C语言进行编程,方便移植,用户只需要调用2各函数即可使用。
- 初始化:
初始化需要实现按键触发响应回调和按键是否按下回调。 - 周期循环:
周期循环仅需要实现周期调用即可。
主要接口函数如下:
项目 | 函数 | 功能 |
---|---|---|
1 | kw_btnInit | 按键初始化,形参按键触发响应回调和按键是否按下回调 |
2 | kw_btnRun | 按键周期运行,运行周期ms |
3 | kw_btnAllStatus | 返回所有按键状态,按位指示,最大指示32bit |
主要变量结构体如下:
项目 | 变量 | 类型 | 说明 |
---|---|---|---|
1 | Btn_Trigger_e | 枚举 | BTN_T_NONE:未响应 BTN_T_RISING:上升沿 BTN_T_FALLING:下降沿 BTN_T_LOW:低电平 BTN_T_HIGH:高电平 BTN_T_CLICK:单击 BTN_T_DOUBLE:双击 BTN_T_LONGT:长时间按下 |
2 | _btnTriggerCB_t | 函数指针 | 按键触发回调响应 |
3 | _btnIsPushCB_t | 函数指针 | 按键是否按下 |
4 | Btn_Type_e | 枚举 | 按键类型(最多32个) |
主要宏定义(位于"kw_baseDrvCFG.h"):
项目 | 定义 | 说明 |
---|---|---|
1 | BTN_RUN_TIME | 循环时间ms,默认10 |
2 | BTN_LONG_TIME | 长时间按键触发时间 |
3 | BTN_DOUBLE_TIME | 双击触发时间 |
4 | BTN_CLICK_TIME | 单击触发时间 |
调用示例
-
裸机程序:
#include "kw_baseDrvCFG.h"static void triggerCB(Btn_Trigger_e t, Btn_Type_e btn) {printf("btn value: %d, trigger value: %d.\r\n", t, btn); }static bool isPushCB(Btn_Type_e btn) {if (btn == BTN_1){return true;}return false; }void main() {kw_btnInit(triggerCB, isPushCB);while (1){kw_btnRun(10);delay(10); // 延时10ms} }
-
操作系统程序:
#include <os.h> #include "kw_baseDrvCFG.h"static void triggerCB(Btn_Trigger_e t, Btn_Type_e btn) {printf("btn value: %d, trigger value: %d.\r\n", t, btn); }static bool isPushCB(Btn_Type_e btn) {if (btn == BTN_1){return true;}return false; }void btn_threads(void* para) {kw_btnInit(triggerCB, isPushCB);while (1){kw_btnRun(10);os_delay(10); // 延时10ms} }