pwm工作过程
解释一下这个图:
假如我们采用的向上计数的方式,从0计数到ARR,有一个输出捕获寄存器存放的值位CCRx,要是计时的数小于CCRx的话,我们输出一个低电平,要是计数的值大于CCRx的话,我们输出一个高电平,这样其实就产生了一个pwm波形,在这个波形中,我们知道,周期是由ARR的值控制的,其实这个值也是受限了时钟频率的,那么波的占空比由CCRx控制的。
pwm输出库函数
示例:使用定时器4实现每1s中断一次,在中断服务程序中实现某种动作。使用定时器3的PWM功能,输出占空比可变的pwm波,实现呼吸灯。
PB5 默认外设引脚的对应里面是没有定时器的,它是通过remap的方式映射到TIM3的通道2上的。这样我们才能输出一个pwm波。
程序源码:
这个程序里面主要是这个的设置:
TIM_OCInitTypeDef TIM_OCInitStructure;
//选择定时器模式:TIM脉冲宽度调制模式2
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
//比较输出使能
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
//输出极性:TIM输出比较极性高
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
这个里面我们设置的是PWM模式2,在使用向上计数的时候,TIMx_CNT < TIMx_CCR1时,通道为无效电平,否则有有限电平,在使用向下计数的时候 TIMx_CNT > TIMx_CCR1时,为有效电平,否则为无效电平。本程序我们使用的是向下计数。
再看一下这个图:
按照这个图来说就是,你的计数值大于CCR的时候,输出一个高电平,计数值小于CCR的时候,输出一个低电平,当你把CCR的值设置的很小,那么波形的占空比就很大,你的CCR值设置的大(肯定是小于ARR的)你的波形的占空比就小。
喜欢我文章的朋友,欢迎关注、点赞、评论、交流。版权个人所有,转载请注明出处。
本文暂时没有评论,来添加一个吧(●'◡'●)