分享免费的编程资源和教程

网站首页 > 技术教程 正文

「STM32」PWM输出实验

goqiw 2024-09-09 06:33:46 技术教程 15 ℃ 0 评论

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的)你的波形的占空比就小。


喜欢我文章的朋友,欢迎关注、点赞、评论、交流。版权个人所有,转载请注明出处。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表