stm32定时器:在同一触发器上启动和重置

stm32定时器:在同一触发器上启动和重置,stm32,Stm32,我有一个周期信号(22 kHz平方),连接到TIM3的IC1。我需要测量此信号的持续时间。 当前实现情况为: 1.TIM2编程为一个脉冲,arr=信号周期+小偏差,触发模式从机,CEN作为主输出,触发INT启用。 2.在TIM2 ISR中,只需执行TIM2->CNT=0 3.TIM3是选通模式下的从定时器,连接至tim2。触发器INT已启用。 4.在TIM3 ISR中,只需计算差异电流CNT和上一个CNT,即可测量信号持续时间。 这是可行的,但由于ISR调用和执行时间的原因,时间并非100%准确

我有一个周期信号(22 kHz平方),连接到TIM3的IC1。我需要测量此信号的持续时间。
当前实现情况为:
1.TIM2编程为一个脉冲,arr=信号周期+小偏差,触发模式从机,CEN作为主输出,触发INT启用。
2.在TIM2 ISR中,只需执行TIM2->CNT=0
3.TIM3是选通模式下的从定时器,连接至tim2。触发器INT已启用。
4.在TIM3 ISR中,只需计算差异电流CNT和上一个CNT,即可测量信号持续时间。
这是可行的,但由于ISR调用和执行时间的原因,时间并非100%准确。
问题:
1.我可以使用相同的外部事件启动和重置相同的计时器吗?
2.我可以在实现中使用输入电容寄存器吗?
3.对我的任务有更好的建议吗?

这几天我真是疯了。请帮忙…;-)

@p_uuuj_uuuu是正确的-您应该配置并使用STM32上的许多定时器为您提供的输入捕获模式。这样,当信号侧翼被识别时,您就不需要任何ISR(软件),因为MCU将为您执行此操作。您只需要一些软件来读取输入捕获中的测量值,但您或多或少可以在ISR或主程序轮询中自由地执行此操作

TIMx
外围设备非常复杂。 因此,我建议大家看一看 以及
.

绝对-只需使用输入捕获模式即可。