脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制。
脉冲:方波,频率(freq)
宽度:高电平的宽度,决定了占空比(duty)
占空比:就是我们高电平占整个周期的百分比
占空比25%
占空比50%
占空比变化动图:
占空比控制舵机角度:
PWM1和PWM2模式
1.定义
PWM 模式 1——只要 TIMx_CNT < TIMx_CCR1,通道 1 便为有效状态,否则为无效状态。
PWM 模式 2——只要 TIMx_CNT < TIMx_CCR1,通道 1 便为无效状态,否则为有效状态。
TIMx_CNT由TIM_TimeBaseStructure.TIM_Period决定,也就是计数值,分频系数一定的情况下,它决定我们的PWM的输出频率是多少。
TIMx_CCR1由TIM_SetComparex(x:1、2、3、4)函数决定,也就是比较值。
有效状态由TIM_OCInitStructure.TIM_OCPolarity决定,假如我们设置高电平为有效电平,反之低电平就为无效电平。
比较值决定我们的PWM的占空比,当我们计数值是0~99,因为是高电平为有效电平,当我们计数没有到50的时候,我们都是高电平,大于50的时候,就是无效电平,即低电平。
其中我们比较值可以直接在TIM_OCInitStructure.TIM_Pulse=后面直接填上,也可以掉用一个专门的函数TIM_SetCompare1(TIMx,比较值);它由2个参数,第一个参数是哪个定时器,第二个参数是我们的比较值大小。且我们也一定要注意这个函数是哪个通道使用。
注:
通道1:TIM_SetCompare1
通道2:TIM_SetCompare2
通道3:TIM_SetCompare3
通道4:TIM_SetCompare4
定时器多通道的理解如图
问题:假如我们的LED1和LED2同时共用TIM1,分别为通道1、通道2,那么CH1和CH2输出频率可以不一样吗?占空比可以不一样吗?
答:输出频率肯定是一样的,因为是同一个定时器,占空比由比较值决定,可以不一样。
注意:TIM1是高级定时器,要额外添加语句TIM_CtrlPWMOutputs(TIM1,ENABLE)。