你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

定时器输入捕获功能能用来计算按键按下时间吗?

[复制链接]
奏奏奏 提问时间:2018-7-8 20:43 /
本帖最后由 奏奏奏 于 2018-7-9 14:15 编辑

最近在做按键功能
要求以3秒为分界线
持续小于3秒为短按
长于3秒为长按

在看红外解码的时候看到 定时器的输入捕获功能
试想用这个功能来测量用户按下按键的持续时间长度(按下为低电平,松开为高电平)


感谢各位的热心帮助。
因为不是所有IO都能指定定时器,
我目前开了一个1毫秒中断的定时器,
每次中断查所有按键的状态。
通过这种方式检测长按与短按,还附带去抖。
收藏 评论6 发布时间:2018-7-8 20:43

举报

6个回答
MrJiu 回答时间:2018-7-9 09:21:34
捕获完全可以啊,但是没必要。。。就一个按键都要用到捕获了?当然了,也和写程序的架构有关系了。。。因人而异吧!!!

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

电子星辰 回答时间:2018-7-9 10:34:45
这是一个类似你要求的例程
本例程使用通用定时器输入捕获功能,测量KEY1被按下时间。
http://www.ing10bbs.com/forum.php?mod=viewthread&tid=182&extra=

YSF1_HAL-018. TIM-通用定时器输入捕获(脉冲测量).rar

下载

17.12 MB, 下载次数: 310, 下载积分: ST金币 -1

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

随风飘扬 回答时间:2018-7-9 11:12:59
理论上是可以的,只是要不要考虑去抖什么的,关于长按和短按,可以考虑一下用状态机的方式实现,也会很方便
andey 回答时间:2018-7-9 17:26:36
提示: 作者被禁止或删除 内容自动屏蔽
奏奏奏 回答时间:2018-7-10 07:11:47
andeyqi 发表于 2018-7-9 17:26
可以,如果带系统的话可以用一个task单独来干这件事,就不用timer来捕获了,减少复杂度 ...

其实像我用的这款STM32F103CBT6来说,最多用STM32CubeMX来配置FreeRTOS只能开3个任务(RAM小没办法呀),定时器资源更充裕一些。
xmstudio 回答时间:2018-7-10 19:06:56
可以说可以,但是没见过有人这么做。我倒是用别的单片机写过测按键按下时间的程序,使用一个比较慢的时钟做定时器,下降沿中断开始计时,然后改成上升沿中断,上升沿中断的时候把定时器的值读出来,就是按键按下的时间,设置几个预置实现不同的功能就OK了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版