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

中科蓝讯 多击(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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值