OpenEdv-开源电子网

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

触摸屏防抖问题请教

[复制链接]

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-4-8 18:48:23 | 显示全部楼层 |阅读模式
MiniSTM32开发板的触摸屏的源码改成
if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
{
Pen_Int_Set(0);//关闭中断
Pen_Point.Key_Sta=Key_Up;
Pen_Int_Set(1);//开启中断
delay_ms(5);//防抖
if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
{
                ...
         }
}else delay_ms(30);
结果发现第二个IF怎么也进不去。
小弟愚笨,还请问:
本意是因为触摸屏太灵敏,触碰一次导致多次中断
想写成按键的防抖那样的话,应该怎么修改代码呢?










~~~~ 欢迎讨论,拒绝谩骂 ~~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-8 19:23:10 | 显示全部楼层
Pen_Point.Key_Sta=Key_Up;
后面又判断if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
能进去么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
 楼主| 发表于 2013-4-8 20:06:51 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥这里我有点不明白的就是,
Pen_Point.Key_Sta=Key_Up;
Pen_Int_Set(1);//开启中断
delay_ms(5);//防抖
if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按

我是重置了状态 但是我之后又开启了中断
是不是触摸屏重置状态之后就没办法由中断重新置Key_Down?
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-8 20:47:47 | 显示全部楼层
回复【3楼】兰斯洛:
---------------------------------
是可以,不过stm32设置的是边沿触发,一旦你的触摸屏一直按着,那么就不会出现边沿了....而是保持固定电平,这样,就不可能响应中断。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
 楼主| 发表于 2013-4-8 21:17:32 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
麻烦原子哥回复,小弟还是有一点不明白的地方。
触摸屏的中断引脚PEN在手触摸屏幕的时候产生的电平变化是平稳的吗?不会像按键一样产生多个脉冲导致多次触发吗?
我实际操作中发现是会多次触发的,虽然不是特别频繁(大概3~4次出现一次连发),所以我想通过软件消抖。
可能因为软件消抖,但是很多根本不抖的时候这个软件消抖反而起到反作用。
那么原子哥,如果想要消抖,怎么做才好呢……
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-8 23:18:53 | 显示全部楼层
回复【5楼】兰斯洛:
---------------------------------
你拿示波器看看波形,比较清楚。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
 楼主| 发表于 2013-4-8 23:30:35 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
{
    delay_ms(10);
    //if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下
    if(PEN==0)//依旧摁下
    {
        en_Int_Set(0);//关闭中断
        Convert_Pos();
        en_Point.Key_Sta=Key_Up;
          …………
       }while(PEN==0);
      en_Int_Set(1);//开启中断
}else delay_ms(30);
把第二个判断改成PEN判断就可以啦
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-4-10 17:05:00 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,你的战舰实验26触摸屏实验,是怎么告诉cpu屏幕被按下的?没用中断吗?
态度决定一切
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-10 19:24:29 | 显示全部楼层
回复【8楼】冰封嗜魔:
---------------------------------
每次按下都是靠中断啊,后续持续按下就是直接判断PEN电平。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-4-10 20:23:21 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
但是看里面没有配置中断呀
态度决定一切
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 16:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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