通用定时器之输出比较的功能
cnt(即为当前计数的值)要与ccR进行比较 比较的结果是输出高低电平。
PWM模式与有效电平
STM32的PWM模式主要有PWM1和PWM2两种,它们在不同计数方向(向上计数或向下计数)和极性选择下的有效电平表现如下:
PWM1模式
- 向上计数:
- 当计数器的值小于比较寄存器的值时,如果极性选择为高电平有效(通常通过配置CCER寄存器的相关位来实现),则输出高电平,即有效电平为高电平;如果极性选择为低电平有效,则输出低电平,即有效电平为低电平。
- 当计数器的值大于或等于比较寄存器的值时,输出状态与上述相反。
- 向下计数(如果支持):
- 类似地,根据极性选择和计数器的值与比较寄存器的值的比较结果,输出高电平或低电平作为有效电平。但需要注意的是,向下计数时的逻辑可能与向上计数时相反,具体取决于定时器的配置。
PWM2模式
- 向上计数:
- 与PWM1模式相反,当计数器的值小于比较寄存器的值时,如果极性选择为低电平有效,则输出低电平为有效电平;如果极性选择为高电平有效,则输出高电平为有效电平(但这种情况在PWM2模式下较少见,因为PWM2模式通常用于当计数器的值大于比较值时输出高电平)。
- 当计数器的值大于或等于比较寄存器的值时,输出状态与上述相反。
- 向下计数(如果支持):
- 与PWM1模式类似,但输出电平的逻辑与PWM1模式在相同极性选择下相反。
- 在代码中的体现如下
- pwm_handle.Init.CounterMode = TIM_COUNTERMODE_UP; //向上计数
- pwm_config.OCMode = TIM_OCMODE_PWM1 ; //选择pwm模式1
- pwm_config.OCPolarity = TIM_OCPOLARITY_LOW; //选择有效电平为低电平 符合led灯低电平点亮