用TIM实现电平计数的方法

有无实现一段时间内根据某GPIO端口的高电平进行计数,低电平停止计数的好方法?条件是高低电平反复出现,要求根据GPIO高电平的累计计数得知高电平的总时间(比如用在抗抖动应用上,模拟了一个电容充电滤波的过程)。固然可以编程死循环查询电平,但是在多线程条件下循环的时间长短不一致,计数不准确。通过中断方法也免不了查询电平(因为不知道是上升沿还是下降沿,即便读取了电平也不一定是中断发生时的状态),还有为了提高精度,计数脉冲的频率尽量达到微妙级,这样中断的时间耗费也过大。有无定时器硬件的实现方法?

您好,感觉你可以考虑一下定时器输入捕获的方式,可以通过捕获高低电平进行计数


其实需求简略说很简单:用外部一个管腿电平自动使能TIM计数脉冲输入或者定时器本身。


只有登录才能回复,可以选择微信账号登录