OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2568|回复: 1

触摸按键实验的一个疑问

[复制链接]

22

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2017-9-18
在线时间
42 小时
发表于 2017-12-27 20:04:16 | 显示全部楼层 |阅读模式
1金钱
上边是触摸按键实验代码,下边是普通按键输入实验代码。我的疑问是,红色代码部分,电容触摸按键相对于普通按键多了一个功能:在不支持连按的情况下,松开按键后进入一个“冷却状态”,此时再次按下触摸按键LED不会有反应,冷却时间还会被刷新,这个功能什么用?我用的是mini板,做不了实际实验,希望知道的人告诉我下谢谢
u8 TPAD_Scan(u8 mode)
{
    static u8 keyen=0;  //0,可以开始检测;>0,还不能开始检测     
    u8 res=0;
    u8 sample=3;        //默认采样次数为3次  
    u16 rval;
    if(mode)
    {
        sample=6;       //支持连按的时候,设置采样次数为6次
        keyen=0;        //支持连按   
    }
    rval=TPAD_Get_MaxVal(sample);
    if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于tpad_default_val+TPAD_GATE_VAL,有效
    {                           
        if(keyen==0)res=1;      //keyen==0,有效
        printf(\"r:%d\r\n\",rval);                                                   
        keyen=3;               
    }
    if(keyen)keyen--;                                                                              
    return res;
}   

u8 KEY_Scan(u8 mode)
{
        static u8 key_up=1;
  if(mode)key_up=1;
        if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
        {
          delay_ms(10);
                key_up=0;
                if(KEY0==0)return KEY0_PRESS;
                if(KEY1==0)return KEY1_PRESS;
                if(WK_UP==1)return WKUP_PRESS;
        }
        else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;   //这里if也对!
        return 0;
}

普通人要怎么努力,才能超越勤奋的天才啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-28 00:48:18 | 显示全部楼层
防止误判,这种问题,最好亲自试验下,就知道了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 20:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表