3. 按键系统Key
- SDK提供了系统key来进行人机交互。现在SDK包含的按键类型有:
IO按键;
AD按键;
红外按键;
矩阵按键。
可以选择单独开其中1类按键,也可以选择同时开启多类按键。按键可以调整按键门阀值。
图1 按键基本配置(app_config.h / key.h)
按键接口:
void key_init(void) void key_table_sel(void *msg_filter) void key_scan(void)
3.1. 按键类型介绍
本节介绍各种不同类型的按键。
3.1.1. IO按键介绍
IO按键的基本配置在“key_drv_io.h”文件中。IO按键需要配置选择的IO口和IO是否需要内部上下拉。
图1.1 IO按键配置(key_drv_io.h)
3.1.2. AD按键介绍
AD按键的基本配置在“key_drv_ad.c”中。AD按键需要配置选择的ADC通道和外上拉电阻的阻值,如果外上拉电阻选择阻值为0,即使选择内上拉电阻。
图1.2 AD按键配置(key_drv_ad.c)
3.1.3. 红外按键介绍
红外按键的基本配置在“key_drv_ir.c”中。红外按键需要配置选择的红外信号采集通道和采集需要的定时器,AD16默认使用PA5和TIMER2, AW30N默认使用PA6和TIMER3。
图1.3 红外按键配置(key_drv_ir.c)
3.1.4. 触摸按键介绍
触摸按键的基本配置在“key_touch.h”中,触摸按键需要配置触摸按键IO口和灵敏度阈值。
图1.4 触摸按键配置(key_touch.h)
图1.4 触摸按键配置(key_touch.h)
3.2. 按键接口介绍
3.2.1. 函数void key_init(void)
此函数根据key的使能类型来初始化不同的key。
3.2.2. 函数void key_table_sel(void *msg_filter)
此函数用来注册一个msg_filter函数,来获取key事件对应的msg。
1、msg_filter:key事件转换成消息的函数接口。
3.2.3. 函数void key_scan(void)
此函数在tick_timer中断中调用,用来扫描处理key事件。
3.3. 按键消息配置
按下按键后,系统通过消息机制来 响应、处理响应的按键事件。不用应用场景下,按键的消息可能不同。各应用模式下,会有自己的按键消息响应表,其中:
Music模式按键响应表:
apps\app\src\music\music_key_table.cUSB从机模式按键响应表:
apps\app\src\music\usb_slave_mode_key.c