首页 > 其他分享 >中科蓝讯 多击(6-8击)实现

中科蓝讯 多击(6-8击)实现

时间:2025-01-16 10:04:31浏览次数:1  
标签:PLAY PWR 中科 USER KEY 多击 蓝讯 DEF define

中科蓝讯 多击(6-8击)实现

  1. 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)
    
  2. 改多击检测:

    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
    };
    
  3. 按键检测处理:

    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;
    
  4. 测试结果:

    image

超过8击的可以看这个博主处理:六击及以上按键消息处理的实现_蓝牙按钮六击-CSDN博客

标签:PLAY,PWR,中科,USER,KEY,多击,蓝讯,DEF,define
From: https://www.cnblogs.com/rose24/p/18674333

相关文章