OpenEdv-开源电子网

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

解放定时器的触摸按键方案

[复制链接]

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
发表于 2015-3-25 17:59:41 | 显示全部楼层 |阅读模式

触摸按键方案——解放定时器
当第一次接触触摸按键的时候觉得还是蛮神奇的。
后来做过一次项目在这上面稍微有点灵感,于是结合原子大哥的程序修改了一下源程序。
主要有以下两个方面的提高:
解放了定时器,理论上给我一个电阻,随便一个IO口我就能做一个触摸按键。
:提高了稳定性,因为经过测试原子大哥的源程序按一次按键有时候其实不止一次。(即使临界触摸下依然稳定)

实现思路:(以STM32F407为例,F1系列只需要微小调整即可)

[mw_shl_code=c,true]u16 TPAD_Get_Val1(void) { GPIO_InitTypeDef GPIO_InitStructure; u16 temp=0; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; //浮空输入 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5))temp++;//▓这一句就完全解放了定时器 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_5); //放电 while(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5)); return temp; }[/mw_shl_code]

提高稳定性方面只是做了微小的改动,就不提了。
使用方法请参考工程。
注意:我只测试了我自己的板子,包括战舰(F1)和探索者(F4)两种,其他板子可能参数需要更改,更改touch pad下的u16 tpad_default_val;即可,其他非上述板子还需要更改TPAD_Scan函数里面的参数,请自行更改,很简单。

此外,本人之前还根据原子大哥的程序在LCD上实现了任意大小字体显示方案,有兴趣的可以看看:http://www.openedv.com/posts/list/40508.htm

One Key(F1).zip

2.81 MB, 下载次数: 444

One Key(F4).zip

2.19 MB, 下载次数: 594

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-25 22:16:50 | 显示全部楼层
楼主有出精品, 不错,很好的办法.
cool.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2015-3-25 22:21:48 | 显示全部楼层
cool,thanks
互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
回复 支持 反对

使用道具 举报

17

主题

102

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2014-10-14
在线时间
0 小时
发表于 2015-3-26 23:48:16 | 显示全部楼层
我觉得用一个可变电阻加一个比较器应该就可以了,手一摸电阻就变了,输出给io口,这样可好?
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-3-27 09:15:40 | 显示全部楼层
回复【4楼】名侦探:
---------------------------------
应该没问题。但干嘛不直接用一只普通电阻?便宜,简单。
回复 支持 反对

使用道具 举报

17

主题

466

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2164
金钱
2164
注册时间
2013-1-11
在线时间
510 小时
发表于 2016-11-23 22:44:02 | 显示全部楼层
顶一个!!!
知识是你最好的财富
回复 支持 反对

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
发表于 2016-12-4 15:37:50 | 显示全部楼层
咋不给我也设一个精华帖呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 22:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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