ST意法半导体
直播中

王辉

7年用户 1281经验值
私信 关注
[问答]

测量PWM频率和脉冲宽度,捕获寄存器似乎永远不会重置怎么解决?

定时器配置如下:
  // 控制寄存器(在通道 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。





回帖(1)

李凯生

2023-1-11 10:09:08
捕获只是捕获输入边沿的时刻。输入无边缘,捕获寄存器无变化。
将未使用的通道之一设置为比较,并将最大预期脉冲长度设置到该通道的 CCRx 中;在该通道上启用中断。
如果到了该时间,请清除您需要清除的所有内容。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分