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

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

[复制链接]
奏奏奏 提问时间: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, 下载次数: 294, 下载积分: ST金币 -1

评分

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

查看全部评分

yu0405jie 回答时间:2018-7-9 11:12:59
理论上是可以的,只是要不要考虑去抖什么的,关于长按和短按,可以考虑一下用状态机的方式实现,也会很方便
andeyqi 回答时间:2018-7-9 17:26:36
可以,如果带系统的话可以用一个task单独来干这件事,就不用timer来捕获了,减少复杂度
奏奏奏 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版