OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 279|回复: 4

请问一个简单的问题

[复制链接]

  离线 

25

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2017-8-10
在线时间
39 小时
发表于 2017-12-12 14:08:05 | 显示全部楼层 |阅读模式
6金钱
现在我要做一个锁键

就是按下锁键三秒才执行以下动作,短按锁键不到3秒是不执行的,

用定时器做,不知怎么做?望路过的指点一下,谢谢!

下图是我写的,不对,一按下就执行了,只是延时了一点!
微信截图_20171212140225.png

最佳答案

查看完整内容[请看2#楼]

定义一个全局变量初始化成0 定时器可以开10ms一次。 定时器中断里面判断IO状态,如果按下计数++,否则清零 计数达到300,置按键标志并停止判断动作。 主函数中判断标志后执行动作,结束后清标志,清计数
回复

使用道具 举报

  离线 

0

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2017-6-2
在线时间
148 小时
发表于 2017-12-12 14:08:06 | 显示全部楼层
定义一个全局变量初始化成0

定时器可以开10ms一次。

定时器中断里面判断IO状态,如果按下计数++,否则清零

计数达到300,置按键标志并停止判断动作。

主函数中判断标志后执行动作,结束后清标志,清计数
回复

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2016-5-19
在线时间
74 小时
发表于 2017-12-19 18:33:49 | 显示全部楼层
本帖最后由 锅里的水煮鱼 于 2017-12-19 18:35 编辑

帮顶哈
回复

使用道具 举报

  离线 

6

主题

488

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1553
金钱
1553
注册时间
2015-5-8
在线时间
256 小时
发表于 2017-12-19 19:56:39 | 显示全部楼层
在你延时之后再加个判断,执行之后复位,这类似于消抖,用定时器就定义个变量然后在定时器中断里数
回复

使用道具 举报

  离线 

5

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2017-12-20
在线时间
19 小时
发表于 2017-12-20 16:18:47 | 显示全部楼层
正点原子公众号
二楼正解,不需要延时,定时扫描按键就好了,连续按下超过3秒才生效,只要有一次松手就把计时清零。
回复

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-23 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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