OpenEdv-开源电子网

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

战舰STM32开发板_电容触摸按键实验问题

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
发表于 2013-8-6 21:52:20 | 显示全部楼层 |阅读模式
问题:无论是寄存器版本还是库函数版本,下载到板子都不能正常运行(无法控制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亮灭了!

请问原子哥,咋回事!!!!?????

















正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-6 23:13:20 | 显示全部楼层
试试这个,寄存器版本的.
我刚刚测试是很正常的.
方块内是按住TPAD读数,方块外是松开后的读数.



实验11 电容触摸按键实验.rar

68.31 KB, 下载次数: 756

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
 楼主| 发表于 2013-8-6 23:30:13 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
试过了,还是一样啊,光盘里的两个程序也试过了,都是一样的问题。是板子问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-6 23:40:55 | 显示全部楼层
回复【3楼】yuxiang660:
---------------------------------
你检查下TPAD和ADC连接的2个排针,是否有黄色的塑胶粘上面?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
 楼主| 发表于 2013-8-6 23:48:50 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
有的啊,没连上的话,改了程序应该控制不了吧?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-7 10:19:39 | 显示全部楼层
回复【5楼】yuxiang660:
---------------------------------
接触不良 可能有你这个现象.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
 楼主| 发表于 2013-8-8 18:47:16 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,是不是地的问题?
TPAD和ADC我用万用表量过的,是连接上的。
然后我们用不同的电脑试了一下,情况也不太一样。
在一台电脑上,用两只手指分别按住PCB的上下表面(一个在图标上,一个在下面的地上),这样就可正常操作了。
但是我换了台电脑,这样的方法就不管用了,情况和原来的一样。
我的是新版的战舰STM32。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-8 20:49:22 | 显示全部楼层
在test.c的system_init函数里面


  if(TPAD_Init(72))system_error_show(5,ypos+12*(j+1),"TPAD Error!");//触摸按键检测
else LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12, "OK"); 
改为:

  if(TPAD_Init(36))system_error_show(5,ypos+12*(j+1),"TPAD Error!");//触摸按键检测
else LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12, "OK"); 
编译后重新下载,试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
 楼主| 发表于 2013-8-10 13:27:42 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
text.c中没有您说的那句话啊??
我把
TPAD_Init(72); //初始化触摸按键
改成了
TPAD_Init(36); //初始化触摸按键
也不行啊
/////////////////////////////////////////////////////////////////////
int main(void)
{
u8 t=0;  
  Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600);   //串口初始化为9600
delay_init(72);       //延时初始化 
LED_Init();    //初始化与LED连接的硬件接口     
  TPAD_Init(72); //初始化触摸按键
    while(1)
{        
  if(TPAD_Scan(0)) //成功捕获到了一次上升沿(此函数执行时间至少15ms)
{
LED1=!LED1; //LED1取反
}
t++;
if(t==15)  
{
t=0;
LED0=!LED0; //LED0取反,提示程序正在运行
}
delay_ms(10);
}
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-10 17:35:52 | 显示全部楼层
回复【9楼】yuxiang660:
---------------------------------
你旺旺联系我们,把板子发回来我检查下看看什么问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-6
在线时间
2 小时
 楼主| 发表于 2013-8-11 08:31:05 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
那我先往下学着吧,这个不碍事,有问题再找您!
谢谢你的耐心解答!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 10:00:25 | 显示全部楼层
回复【11楼】yuxiang660:
---------------------------------
不客气,谢谢支持.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 05:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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