打印
[STM8]

stm8触摸库 怎么实现组合键

[复制链接]
1960|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dkblue|  楼主 | 2013-6-19 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define S2_DETECTED (sSCKeyInfo[0].Setting.b.DETECTED)

#define S6_DETECTED (sSCKeyInfo[1].Setting.b.DETECTED)

#define S3_DETECTED (sSCKeyInfo[2].Setting.b.DETECTED)

#define S1_DETECTED (sSCKeyInfo[3].Setting.b.DETECTED)

#define S4_DETECTED (sSCKeyInfo[4].Setting.b.DETECTED)

#define S5_DETECTED (sSCKeyInfo[5].Setting.b.DETECTED)



if( S1_DETECTED && S5_DETECTED               

{

        WWDG->CR = 0XfF;
        GPIOC->ODR=0XFF;
        single_key_en=0;
}


单键和长按短按键 都可以稳定               就这组合键不稳定,有时候 S1 S5 两键 直接被屏蔽掉~~~~
求大神   解答
沙发
wolfojc| | 2014-10-17 14:37 | 只看该作者
兄弟,我也是查资料才看到你的这个问题,也许你已经解决了,但我想我还是抽点时间回复下,为想要这样做但是遇到同样问题的兄弟作参考。
回为我当时也想这样做,但是不行,后来看他库里面的文件,终于发现他的检测思路是有键按下时,其它键就不检测跳出来了,
我把库文件
stm8_tsl_services.c


void TSL_SCKey_DxS(void)
{
  u8 DxSGroupMask, KeyToCheck;

  if (pKeyStruct->Setting.b.LOCKED)
    return;

  DxSGroupMask = pKeyStruct->DxSGroup;

  for (KeyToCheck = 0; KeyToCheck < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyToCheck++)
  {
    if (KeyToCheck != KeyIndex)
    {
      // KeyToCheck and current key are in same group ?
      if (sSCKeyInfo[KeyToCheck].DxSGroup & DxSGroupMask)
      {
        if (sSCKeyInfo[KeyToCheck].Setting.b.LOCKED)
        {
          goto ExitToIdle;
        }
      }
    }
  }

#if NUMBER_OF_MULTI_CHANNEL_KEYS > 0
  for (KeyToCheck = 0; KeyToCheck < NUMBER_OF_MULTI_CHANNEL_KEYS; KeyToCheck++)
  {
    // KeyToCheck and current key are in same group ?
    if (sMCKeyInfo[KeyToCheck].DxSGroup & DxSGroupMask)
    {
      if (sMCKeyInfo[KeyToCheck].Setting.b.LOCKED)
      {
        goto ExitToIdle;
      }
    }
  }
#endif

  pKeyStruct->Setting.b.LOCKED = 1;
  return;

ExitToIdle:   // The DxS is verified at PRE DETECT state only !
//pKeyStruct->Channel.IntegratorCounter++;  // Increment integrator to never allow DETECT state  return;
}

对应红色那行注释掉就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

9

帖子

0

粉丝