定时器配置如下:
// 控制寄存器(在通道 1 和 2 [引脚 12 和 13] 上输入 PWM)
tiM4->CCMR1 |= TIM_CCMR1_CC1S_0 ; // tim_ccr1 的有效输入
TIM4->CCMR1 |= TIM_CCMR1_CC2S_1;// tim_ccr2 的有效输入
TIM4->CCER |= TIM_CCER_CC2P; // tl1fp2 的有效极性(测量值)
TIM4->SMCR |= 0x50;// 选择有效的输入触发器 TL1
TIM4->SMCR |= TIM_SMCR_SMS_2;// 在重置模式下配置控制器
TIM4->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC2E); // 启用捕获
当存在输入信号时,测量报告引脚上的正确周期和脉冲宽度。当我关闭引脚上的 PWM 信号时,最后捕获的值保留在 CCR1 和 CCR2 中。当通道配置为输入时,如本例所示,CCR1 和 CCR2 是只读的,我无法手动清除它们。这里的复位方式好像只复位定时器计数器,不复位捕获寄存器。
我在配置中遗漏了什么吗?我的目的是能够测量 PWM 频率和脉冲宽度,以及知道 PWM 信号是否已关闭(我的假设是捕获寄存器被清除)
如果没有 PWM 信号,则没有上升沿来重置计数器,即使如此,捕获寄存器似乎永远不会重置,只是在捕获事件(上升沿和下降沿)期间更新为新值。
有没有办法将这些寄存器重置为当我知道的引脚上没有输入 PWM 信号时的状态,因为它们将读取 0。