OpenEdv-开源电子网

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

触摸按键实验TPAD_Scan函数中,连续触发是怎么实现的

[复制链接]

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-10-1
在线时间
10 小时
发表于 2017-10-3 21:55:19 | 显示全部楼层 |阅读模式
5金钱
今天在看触摸按键实验时,看不懂连续触发是怎么实现的,主要不懂keyen的作用

TPAD_Scan.png

最佳答案

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-10-3 21:55:20 | 显示全部楼层
回复

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-10-4 15:01:37 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
发表于 2017-10-5 11:58:41 | 显示全部楼层
帮顶                                          
回复

使用道具 举报

14

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2569
金钱
2569
注册时间
2017-2-20
在线时间
245 小时
发表于 2017-10-5 15:32:05 | 显示全部楼层
如果mode=0则不支持连按,而Keyen是静态变量,也就是说函数调取结束后,Keyen的变量空间是不会被释放的,而要想按下有效的话,必须满足两个条件,一个是充电时间满足要求,一个是Keyen要等于0,一旦按下有效则keyen=3,也就是说如果mode变量不等于1(也就是不支持连按模式),按键触发后,keyen必须经满足松开按键并且扫描函数执行3次后才能再次触发。而如果mode=1(支持连按模式),每次调用函数都会对keyen清零,也就是只要满足充电时间就会在每次扫描时进行按键触发。
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2017-9-20
在线时间
27 小时
发表于 2017-10-10 11:24:50 | 显示全部楼层
学霸君 发表于 2017-10-5 15:32
如果mode=0则不支持连按,而Keyen是静态变量,也就是说函数调取结束后,Keyen的变量空间是不会被释放的,而 ...

请教下当mode=0时,TPAD按下,主函数循环一次后,TPAD_SCAN(0)函数运行一次,keyen值为2,此时若没有松手,再循环一次,keyen值为1,再循环一次为0。若此时还没有松手,keyen为0了,TPAD_SCAN(0)的值又为1了,这句函数if(TPAD_Scan(0))        {LED1=!LED1;        }应该要运行了,led应该要动作。那么led1应该是keyen每三次闪烁一下行
可是实际上,led1只是在按键后一直保持着亮。这是该怎么理解呢?
回复

使用道具 举报

14

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2569
金钱
2569
注册时间
2017-2-20
在线时间
245 小时
发表于 2017-10-10 17:40:29 | 显示全部楼层
924583269 发表于 2017-10-10 11:24
请教下当mode=0时,TPAD按下,主函数循环一次后,TPAD_SCAN(0)函数运行一次,keyen值为2,此时若没有松手 ...

如果没有松手keyen值会一直为3,因为只要按下程序就会进入if,进入之后就会给keyen赋值为3,你可以硬件仿真一下
电子之路漫漫兮,吾将任总而道远。http://www.openedv.com/static/image/smiley/default/lol.gif
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2017-9-20
在线时间
27 小时
发表于 2017-10-10 21:43:06 | 显示全部楼层
学霸君 发表于 2017-10-10 17:40
如果没有松手keyen值会一直为3,因为只要按下程序就会进入if,进入之后就会给keyen赋值为3,你可以硬件仿 ...

谢谢了,硬件仿真了下。只要没有松手,运行完后,keyen的值一直都是2,松手了才会运行两次后变成0,为下一次按键做准备。
也终于理解了,这个程序的逻辑真的很棒!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 20:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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