标准SDK按键基本说明(sdk_cfg.h)
按键音宏定义。
按键双击功能宏定义,可以在key.h配置双击间隔时间。
按键类型选择(key.h)。
按键GPIO口配置,需要软关机就使用PR口,一般使用普通GPIO口。
可以配置按键生效时间(10ms)。
/*按键门槛值*/
#define KEY_BASE_CNT 4
#define KEY_LONG_CNT 75
#define KEY_HOLD_CNT 15
#define KEY_SHORT_CNT 7
/*按键状态*/
#define KEY_SHORT_UP 0x0
#define KEY_LONG 0x1
#define KEY_HOLD 0x2
#define KEY_LONG_UP 0x3
#define KEY_DOUBLE_CLICK_CNT 35 //35*10ms
#define NO_KEY 0xff
按键触发方式:
- 短按抬起:单击,可用于上/下曲,模式切换类功能
- 长按:按住不放(按键生效一次),可用于软关机类功能
- 连按:按住不放(按键生效多次),可用于音量+/-
- 长按抬起:按住不放(抬起按键生效),根据需要使用
按键功能实现说明
因为每个模式单独生效,所以每个模式的按键功能需要单独配置(例task_bt_key.c)。
#define KEY_REG_AD_MAX (10)
#define KEY_REG_IO_MAX (10)
#define KEY_REG_IR_MAX (21)
#define KEY_REG_TOUCH_MAX (10)
#define KEY_REG_UART_MAX (10)
const u16 task_bt_ad_table[4][KEY_REG_AD_MAX] = {
/*短按*/ {ADKEY_BT_SHORT},
/*长按*/ {ADKEY_BT_LONG},
/*连按*/ {ADKEY_BT_HOLD},
/*长按抬起*/ {ADKEY_BT_LONG_UP},
};
按键消息处理(task_bt.c)
功能模块的消息处理:
void task_bt_deal(void *hdl)
main线程的消息处理:
tbool task_common_msg_deal(void *hdl, u32 msg)