- 在board_jl701n_demo_cfg.h文件中使能AD按键,配置AD按键的端口以及电阻(TCFG_ADKEY_ADX)
#define TCFG_ADKEY_ENABLE ENABLE_THIS_MOUDLE
#define TCFG_ADKEY_PORT IO_PORTB_02
#define TCFG_ADKEY_AD_CHANNEL AD_CH_PB2
#define TCFG_ADKEY_EXTERN_UP_ENABLE ENABLE_THIS_MOUDLE
#if TCFG_ADKEY_EXTERN_UP_ENABLE
#define R_UP 220
#else
#define R_UP 100
#endif
#define TCFG_ADKEY_AD0 (0)
#define TCFG_ADKEY_AD1 (0x3ffL * 30 / (30 + R_UP))
#define TCFG_ADKEY_AD2 (0x3ffL * 62 / (62 + R_UP))
#define TCFG_ADKEY_AD3 (0x3ffL * 91 / (91 + R_UP))
#define TCFG_ADKEY_AD4 (0x3ffL * 150 / (150 + R_UP))
#define TCFG_ADKEY_AD5 (0x3ffL * 240 / (240 + R_UP))
#define TCFG_ADKEY_AD6 (0x3ffL * 330 / (330 + R_UP))
#define TCFG_ADKEY_AD7 (0x3ffL * 510 / (510 + R_UP))
#define TCFG_ADKEY_AD8 (0x3ffL * 1000 / (1000 + R_UP))
#define TCFG_ADKEY_AD9 (0x3ffL * 2200 / (2200 + R_UP))
#define TCFG_ADKEY_VDDIO (0x3ffL)
#define TCFG_ADKEY_VOLTAGE0 ((TCFG_ADKEY_AD0 + TCFG_ADKEY_AD1) / 2)
#define TCFG_ADKEY_VOLTAGE1 ((TCFG_ADKEY_AD1 + TCFG_ADKEY_AD2) / 2)
#define TCFG_ADKEY_VOLTAGE2 ((TCFG_ADKEY_AD2 + TCFG_ADKEY_AD3) / 2)
#define TCFG_ADKEY_VOLTAGE3 ((TCFG_ADKEY_AD3 + TCFG_ADKEY_AD4) / 2)
#define TCFG_ADKEY_VOLTAGE4 ((TCFG_ADKEY_AD4 + TCFG_ADKEY_AD5) / 2)
#define TCFG_ADKEY_VOLTAGE5 ((TCFG_ADKEY_AD5 + TCFG_ADKEY_AD6) / 2)
#define TCFG_ADKEY_VOLTAGE6 ((TCFG_ADKEY_AD6 + TCFG_ADKEY_AD7) / 2)
#define TCFG_ADKEY_VOLTAGE7 ((TCFG_ADKEY_AD7 + TCFG_ADKEY_AD8) / 2)
#define TCFG_ADKEY_VOLTAGE8 ((TCFG_ADKEY_AD8 + TCFG_ADKEY_AD9) / 2)
#define TCFG_ADKEY_VOLTAGE9 ((TCFG_ADKEY_AD9 + TCFG_ADKEY_VDDIO) / 2)
#define TCFG_ADKEY_VALUE0 0
#define TCFG_ADKEY_VALUE1 1
#define TCFG_ADKEY_VALUE2 2
#define TCFG_ADKEY_VALUE3 3
#define TCFG_ADKEY_VALUE4 4
#define TCFG_ADKEY_VALUE5 5
#define TCFG_ADKEY_VALUE6 6
#define TCFG_ADKEY_VALUE7 7
#define TCFG_ADKEY_VALUE8 8
#define TCFG_ADKEY_VALUE9 9
const struct adkey_platform_data adkey_data = {
.enable = TCFG_ADKEY_ENABLE,
.adkey_pin = TCFG_ADKEY_PORT,
.ad_channel = TCFG_ADKEY_AD_CHANNEL,
.extern_up_en = TCFG_ADKEY_EXTERN_UP_ENABLE,
.ad_value = {
TCFG_ADKEY_VOLTAGE0,
TCFG_ADKEY_VOLTAGE1,
TCFG_ADKEY_VOLTAGE2,
TCFG_ADKEY_VOLTAGE3,
TCFG_ADKEY_VOLTAGE4,
TCFG_ADKEY_VOLTAGE5,
TCFG_ADKEY_VOLTAGE6,
TCFG_ADKEY_VOLTAGE7,
TCFG_ADKEY_VOLTAGE8,
TCFG_ADKEY_VOLTAGE9,
},
.key_value = {
TCFG_ADKEY_VALUE0,
TCFG_ADKEY_VALUE1,
TCFG_ADKEY_VALUE2,
TCFG_ADKEY_VALUE3,
TCFG_ADKEY_VALUE4,
TCFG_ADKEY_VALUE5,
TCFG_ADKEY_VALUE6,
TCFG_ADKEY_VALUE7,
TCFG_ADKEY_VALUE8,
TCFG_ADKEY_VALUE9,
},
};
#endif
- TCFG_ADKEY_VALUE0为KEY 0按键,当按下时会触发KEY MSG里的事件,如:
- 当按下TCFG_ADKEY_VOLTAGE0电阻对应的按键时,就会根据TCFG_ADKEY_VALUE0里的值去抛出对应的MSG事件,此处TCFG_ADKEY_VALUE0值为0,则会抛出KEY 0短按的事件
KEY_MUSIC_PP
,当长按TCFG_ADKEY_VOLTAGE1对应电阻的按键,则会抛出 KEY_VOL_DOWN
事件…
u8 key_table[KEY_NUM_MAX][KEY_EVENT_MAX] = {
{KEY_MUSIC_PP, KEY_POWEROFF, KEY_POWEROFF_HOLD, KEY_NULL, KEY_CALL_LAST_NO, KEY_NULL},
{KEY_MUSIC_NEXT, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_OPEN_SIRI, KEY_NULL},
{KEY_MUSIC_PREV, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_HID_CONTROL, KEY_NULL},
};