中科蓝讯 多击(6-8击)实现
-
bsp_key.h:定义按键值
可以看到下面key_type_mask占用了0x1f00,所以可以顶多设置为八击
define KEY_FIVE 0x1B00 //5击 #define KEY_SIX 0x1C00 //6击 #define KEY_SEVEN 0x1D00 //7击 #define KEY_EIGHT 0x1E00 //8击 #define KEY_TYPE_MASK 0x1f00 #define KSI_PLAY_USER_DEF (KEY_PLAY_USER_DEF | KEY_SIX) #define KSE_PLAY_USER_DEF (KEY_PLAY_USER_DEF | KEY_SEVEN) #define KEI_PLAY_USER_DEF (KEY_PLAY_USER_DEF | KEY_EIGHT) #define KSI_PLAY_PWR_USER_DEF (KEY_PLAY_PWR_USER_DEF | KEY_SIX) #define KSE_PLAY_PWR_USER_DEF (KEY_PLAY_PWR_USER_DEF | KEY_SEVEN) #define KEI_PLAY_PWR_USER_DEF (KEY_PLAY_PWR_USER_DEF | KEY_EIGHT)
-
改多击检测:
bsp_key.c修改key_init():
key_cb.times = 8; //按键最多检测几击?
改多击检测数组:
const u16 key_multi_tbl[7] = { KEY_DOUBLE, KEY_THREE, KEY_FOUR, KEY_FIVE,KEY_SIX,KEY_SEVEN,KEY_EIGHT };
-
按键检测处理:
func_bt_message_do函数:
//六击 case KSI_PLAY_USER_DEF: case KSI_PLAY_PWR_USER_DEF: printf("=======SIX TIMES PRESS==============\n"); break; //七击 case KSE_PLAY_USER_DEF: case KSE_PLAY_PWR_USER_DEF: printf("========SEVEN TIMES============\n"); break; //八击 case KEI_PLAY_USER_DEF: case KEI_PLAY_PWR_USER_DEF: printf("========EIGHT TIMES============\n"); break;
-
测试结果:
超过8击的可以看这个博主处理:六击及以上按键消息处理的实现_蓝牙按钮六击-CSDN博客
标签:PLAY,PWR,中科,USER,KEY,多击,蓝讯,DEF,define From: https://www.cnblogs.com/rose24/p/18674333