问题:无论是寄存器版本还是库函数版本,下载到板子都不能正常运行(无法控制DS1亮灭,跳线帽已经插上)。
串口输出值如下:
①按三次复位键,出现三次默认值为:71
②用手按住电容触摸按键,按三次复位键,出现三次默认值为:7(为什么是变小的???)
按照《开发指南》的解释,用手按住应该充电时间变长才是???
所以我把下面的程序代码改了:
原代码(库函数版本)
/********************************************************************************************/
#define TPAD_GATE_VAL 80 //触摸的门限值,也就是必须大于tpad_default_val+TPAD_GATE_VAL,才认为是有效触摸.
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,有效
{
rval=TPAD_Get_MaxVal(sample);
if((keyen==0)&&(rval>(tpad_default_val+TPAD_GATE_VAL)))//大于tpad_default_val+TPAD_GATE_VAL,有效
{
res=1;
}
//printf("r:%d\r\n",rval);
keyen=5; //至少要再过5次之后才能按键有效
}else if(keyen>2)keyen=2; //如果检测到按键松开,则直接将次数将为2,以提高响应速度
if(keyen)keyen--;
return res;
}
/********************************************************************************************/
我改了的代码:
/********************************************************************************************/
#define TPAD_GATE_VAL 50 //触摸的门限值,也就是必须小于tpad_default_val-TPAD_GATE_VAL,才认为是有效触摸.
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,有效
{
rval=TPAD_Get_MaxVal(sample);
if((keyen==0)&&(rval<(tpad_default_val-TPAD_GATE_VAL)))//小于tpad_default_val-TPAD_GATE_VAL,有效
{
res=1;
}
//printf("r:%d\r\n",rval);
keyen=5; //至少要再过5次之后才能按键有效
}else if(keyen>2)keyen=2; //如果检测到按键松开,则直接将次数将为2,以提高响应速度
if(keyen)keyen--;
return res;
}
/********************************************************************************************/
程序竟然跑通了!!!!!电容触摸按键可以控制DS1亮灭了!
请问原子哥,咋回事!!!!?????
|