目录
一、简述
在日常的项目中经常使用到按键来进行功能的操作,在杰理的SDK包中已经做好了按键的驱动和几种按键方式的检测等。其中按键的驱动文件key_driver.c中包含了对按键的初始化,按键的扫描以及消抖/映射等功能的编写实现。并通过注册按键扫描定时器,定时的扫描键值,并将对应键值的事件推送出去进行响应处理。
在不同类型的按键消息通过task_key.c中的映射管理,将消息和键值进行了一一对应,因此只需要在相应类型按键表格xxx_table.c中的对应模式中填写相应的事件即可。
以AD按键为例,在adkey_table.c中添加按键事件如下(示例):
在每个按键方式的处理中都有响应的按键驱动扫描参数列表来对按键的扫描频率、消抖次数、长按/连按判定次数进行了设定:
AD按键为例,在adkey.c中设置了参数列表(示例):
二、独立IO按键
独立IO按键的设置需进行iokey配置,并传入IO按键结构体参数。且独立IO按键可进行两个组合按键重新映射为新的键值。(默认IO按键个数为3个,也可仿照自行添加按键数)
- IO定义配置:在使用IO按键前,需对IO按键的使能、方向、引脚等进行简单的定义配置,通常是在板级文件board_ac695x_demo_cfg.h中进行处理:
- 参数:当配置好宏定义后,最终还是将相应的宏定义参数对应到IO按键的参数(连接参数、引脚、键值)进行对应和设置,在板级参数文件board_ac695x_demo_cfg.c进行对应:
- 组合按键:针对独立IO按键方式,有组合按键(即两个按键同时按下响应一个按键值)时,使用该方式时,需将使能MULT_KEY_ENABLE打开,并根据实际按键配置组合按键映射表:
三、AD按键
同理AD按键的设置需进行adkey进行宏定义配置,并对应传入AD按键结构体参数,而与IO按键不同的是:AD按键是根据分压导致ADC值不同判断键值,故收到分压电阻的影响,需根据实际案子修改判断值。
AD按键宏定义如下(示例):
由于AD按键时通过电阻的分压导致ADC的不同来判定键值的,因此需根据案子的实际电阻值修改参数或硬件使用默认的阻值。而AD按键的判定值是根据分压来设定的,当阻值太近或不好修改时,也可直接将判定值固定直接写入。
AD按键的阻值设定(示例):
四、其他按键
除了独立按键和AD按键,常用的还有红外按键、编码器按键、触摸按键(未测试过)等,都是同理进行按键宏配置,并传入按键结构体参数即可。
注意点:(1)红外按键需注意用户码值(默认为0xFF00),以及使用了TIME3定时器用于获取红外波形,需防止别其他地方复用;