ddllxxrr 发表于 2017-11-4 10:43

CH554评测:五,电容按键TOUCHKey例程的疑问

<div class='showpostmsg'> 本帖最后由 ddllxxrr 于 2017-11-4 17:54 编辑

我今天想用到按键,见开发板上有,就没有动别的心思,就把例程上给的HEX直接烧录到开发板。
想看下按键好用不啦。可让我吃惊的是,只有K2和k3可以串口输出,但串口输出的全是第3通道。如下面这个样子,无论按K2或K3都输出:
QueryTouchkey chanel 03

翻开原理更让我不解,居然是键子不是单独的而是相互连的,见下图:




上图的k1k2,没有直接接地,而是同K3,K4配合的,K3,K4是一端接地的,但我明明是K2,K3好用。

我重新建个工程,重新编译,不用中断,但是还是一样,程序也就是走查询那段程序(没用中断):
while(1)                                                                  
    {                        
      TouchKeyChannelQuery();
if(KeyBuf)
      {                                                
      printf("Query TouchKey Channel %02x \n",(UINT16)KeyBuf);   
      KeyBuf      = 0;
      mDelaymS(20);   
      }
//       mDelaymS(100);   
    }而查询函数如下:
/*******************************************************************************
* Function Name: TouchKeyChannelQuery()
* Description    : 触摸按键通道状态查询
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void TouchKeyChannelQuery()
{
          UINT8        ch;
    UINT16 KeyData;

    while((TKEY_CTRL&bTKC_IF) == 0);                                          //bTKC_IF变为1时,本周期采样完成
    KeyData = TKEY_DAT;                                                       //保持87us,尽快取走
    ch = TKEY_CTRL&7;                                                         //获取当前采样通道
    if ( ch > KEY_LAST ){
       TKEY_CTRL = TKEY_CTRL & 0xF8 | KEY_FIRST;                              //从首通道开始采样
    }                       
    else
    {
       TKEY_CTRL ++;                                                          //切换至下一个采样通道
    }
    if ( KeyData < (KeyFree - KEY_ACT) )                        //如条件满足,代表按键按下   
    {
      KeyBuf=ch;                                                            //可以在此处进行按键动作处理或者置标志通知main进行处理
    }
}
#endif


我把代码下进去后,我试了下一样,但更奇葩的事发生了,我的手指偶尔碰了下,插针的P10和P30
具然出现了第一通道,截图如下:


不知大家的怎么样,我的TouckKey例程,跑起来就是这个样子。

是我的个例还是大家都这个样子????


此内容由EEWORLD论坛网友ddllxxrr原创,如需转载或用于商业用途需征得作者同意并注明出处




</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

曹伟1993 发表于 2017-11-4 11:39

看了半天也没有看明白你到底说了什么,可能是我的理解能力太差了,你好好组织下语言吧,感觉你的话我都看不懂

ddllxxrr 发表于 2017-11-4 17:59

曹伟1993 发表于 2017-11-4 11:39
看了半天也没有看明白你到底说了什么,可能是我的理解能力太差了,你好好组织下语言吧,感觉你的话我都看不 ...

重新组织语言了,我觉得,应能看明白的,反正我明白

123dong4 发表于 2017-11-6 15:08

去官网看看,或者联系原厂试试,http://www.wch.cn/bbs/thread-65023-1.html

SuiBianLiuLiu 发表于 2017-11-6 15:19

你把板子上的LED拆掉就行识别4和按键了。
触摸按键我们分为自容式(通道对地),互容式(通道之间),所以有2种按键构成形态。
页: [1]
查看完整版本: CH554评测:五,电容按键TOUCHKey例程的疑问