杰理AC692X学习-按键配置及自定义消息

先把程序改动起来不进行源码分析,首先定位到key.h,选择按键类型以ad按键为例
在这里插入图片描述

再定位到对应的下一级文件,修改按键io口,及对应的通道,这里选择PB0,
在这里插入图片描述

//AD channel define
#define AD_CH_PA3    (0x0<<8)
#define AD_CH_PA4    (0x1<<8)
#define AD_CH_PA5    (0x2<<8)
#define AD_CH_PA6    (0x3<<8)
#define AD_CH_PC4    (0x4<<8)
#define AD_CH_PA10   (0x5<<8)
#define AD_CH_PB0    (0x6<<8)
#define AD_CH_PB1    (0x7<<8)
#define AD_CH_PB4    (0x8<<8)
#define AD_CH_PB5    (0x9<<8)
#define AD_CH_PC3    (0xA<<8)
#define AD_CH_DM     (0xB<<8)
#define AD_CH_RTC    (0xC<<8)
#define AD_CH_PMU    (0xD<<8)
#define AD_CH_BT     (0xE<<8)
#define AD_CH_AUDIO  (0xF<<8)

接着到指定模块的task_xx_key.c中修改按键消息,将需要使用的按键消息放在复制到对应的按键类型及按键号中
在这里插入图片描述
添加自己的按键消息并且调用,找到 msg.h 下的枚举选择一篇有空白数值的区域作为自己的按键消息
在这里插入图片描述
添加好之后,将自己定义的消息放在对应任务的按键文件下,接下来就是调用,找到对应模块的task_deal 函数,bt模式下
在switch下把自己的按键消息加入其中,然后添加自己的按键任务函数
在这里插入图片描述
源码分析,这一实现过程是,adc在定时器中扫描将adc值存在数组中,ad按键的adc值直接从adc数组中拿,按键驱动扫描完之后抄表将按键消息推入队列,再主函数中出队列实现调用,这一过程熟悉之后,可以试着使用task_post_msg这个函数发布消息,再主函数中处理,可以实现丰富的功能
附上自己的写一个按键驱动代码,采用的就是杰里的这一思路,在工程中已经验证可行

/* key.c完成按键扫描,获得最后的按键键值以及type,抄表转换成消息*/
void key2msg_filter(u8 key_status, u8 back_last_key)
/* 抄表将键值和类型转成按键消息 */
 msg = cur_key_msg_reg->_ad[key_status][back_last_key];
/* 消息推送,将按键消息入队列 */
task_post_msg(NULL, 1, msg);

在这里插入图片描述
adc 2ms扫描一轮,每次扫描不同的通道,并将adc值存在数组中

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lala0903/article/details/106536871