我有一个周期信号(22 kHz方形),连接到TIM3的IC1。我需要测量这个信号的持续时间
目前的实现是:
1. TIM2编程为单脉冲,arr =信号周期+小偏差,触发模式从机,CEN为主输出,触发INT启用。
2.在TIM2 ISR中,只做TIM2-> CNT = 0;
3. TIM3是门控模式下的从机定时器,连接到tim2。触发INT启用。
4.在TIM3 ISR中,只计算一个差分电流CNT和prev CNT来测量信号持续时间
这是有效的,但由于ISR呼叫和时间,时间不是100%准确。执行时间。
问题:
1.我可以使用相同的外部事件来启动和重置相同的计时器吗?
2.我可以在实现中使用输入捕获寄存器吗?
3.对我的任务有一些更好的想法?
我真的打破了我的大脑一天。请帮忙...... ;-)
答案 0 :(得分:0)
@P__J__是正确的-您应该配置和使用输入捕捉模式,STM32上的许多定时器都为您提供了此功能。这样一来,在信号侧面被识别的那一刻,您将不需要任何ISR(软件),因为MCU会为您做到这一点。您只需要一些软件即可从Input Capture中读取测量结果,但是您可以或多或少地在ISR中进行操作或从主程序中进行轮询。
TIMx
外围设备非常复杂。
因此,我建议看看
this Application Note from ST
以及
that one。