3. 按键系统Key

SDK提供了系统key来进行人机交互。现在SDK包含的按键类型有:
  • IO按键;

  • AD按键;

  • 红外按键;

  • 矩阵按键。

可以选择单独开其中1类按键,也可以选择同时开启多类按键。按键可以调整按键门阀值。

"图1 按键基本配置(app_config.h / key.h)“

图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)“

图1.1 IO按键配置(key_drv_io.h)

3.1.3. 红外按键介绍

红外按键的基本配置在“key_drv_ir.c”中。红外按键需要配置选择的红外信号采集通道和采集需要的定时器,AD16默认使用PA5和TIMER2, AW30N默认使用PA6和TIMER3。

"图1.3 红外按键配置(key_drv_ir.c)“

图1.3 红外按键配置(key_drv_ir.c)

3.1.4. 触摸按键介绍

触摸按键的基本配置在“key_touch.h”中,触摸按键需要配置触摸按键IO口和灵敏度阈值。

"图1.4 触摸按键配置(key_touch.h)“

图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.c

USB从机模式按键响应表:

apps\app\src\music\usb_slave_mode_key.c