定时器输入捕获功能能用来计算按键按下时间吗?
本帖最后由 奏奏奏 于 2018-7-9 14:15 编辑最近在做按键功能
要求以3秒为分界线
持续小于3秒为短按
长于3秒为长按
在看红外解码的时候看到 定时器的输入捕获功能
试想用这个功能来测量用户按下按键的持续时间长度(按下为低电平,松开为高电平)
感谢各位的热心帮助。
因为不是所有IO都能指定定时器,
我目前开了一个1毫秒中断的定时器,
每次中断查所有按键的状态。
通过这种方式检测长按与短按,还附带去抖。
捕获完全可以啊,但是没必要。。。就一个按键都要用到捕获了?当然了,也和写程序的架构有关系了。。。因人而异吧!!! 这是一个类似你要求的例程
本例程使用通用定时器输入捕获功能,测量KEY1被按下时间。
http://www.ing10bbs.com/forum.php?mod=viewthread&tid=182&extra= 理论上是可以的,只是要不要考虑去抖什么的,关于长按和短按,可以考虑一下用状态机的方式实现,也会很方便 可以,如果带系统的话可以用一个task单独来干这件事,就不用timer来捕获了,减少复杂度 andeyqi 发表于 2018-7-9 17:26
可以,如果带系统的话可以用一个task单独来干这件事,就不用timer来捕获了,减少复杂度 ...
其实像我用的这款STM32F103CBT6来说,最多用STM32CubeMX来配置FreeRTOS只能开3个任务(RAM小没办法呀),定时器资源更充裕一些。 可以说可以,但是没见过有人这么做。我倒是用别的单片机写过测按键按下时间的程序,使用一个比较慢的时钟做定时器,下降沿中断开始计时,然后改成上升沿中断,上升沿中断的时候把定时器的值读出来,就是按键按下的时间,设置几个预置实现不同的功能就OK了
页:
[1]