【STM32】PWM输出原理

目录

PWM模式的工作框架:

PWM模式的工作原理:

PWM库函数配置:

1.初始化定时器输出通道:TIM_OC2Init

2.设置比较值函数:TIM_SetComparex

3.使能预装载寄存器:void TIM_OC2PreloadConfig


PWM模式的工作框架:

PWM模式的工作原理:

由之前的定时器中断实验知道,定时器内部有一个记录定时器当前值的寄存器CNT和一个记录定时器自动重装载值的寄存器ARR,而在PWM工作模式下,我们依然利用这两个定时器来记录时间,不同的是多引入一个寄存器CCRx,这个寄存器用于控制PWM输出波的有效电平长度、引入CCMRx寄存器来控制PWM模式、引入寄存器CCERx:CC1P位控制输出电平极性。

PWM模式可以控制当计数器的值小于CCRx寄存器设定的值时输出的是有效电平还是无效电平,

  • 在PWM模式1下,我们控制凡是小于CCRx寄存器数值的电平都是有效电平,无论是向上计数还是向下计数;
  • PWM模式2下,我们控制凡是小于CCRx寄存器数值的电平都是无效电平,无论是向上计数还是向下计数;

下面以PWM模式1为例:当计数器小于CCRx数值时,输出的为有效的电平,例如上图中,我们通过控制寄存器CCERx:CC1P位让有效电平为低电平,所以当计数器小于寄存器CCRx设定的数值时,输出的为有效的低电平。当计数器大于CCRx设定的值时,输出无效的高电平。

PWM库函数配置:

PWM实验的配置步骤如下:

  • 初始化定时器时钟和输出GPIO的时钟;
  • GPIO的初始化;
  • 定时器初始化;
  • 定时器输出通道参数初始化;
  • 定时器使能;
  • 预装载寄存器使能;

1.初始化定时器输出通道:TIM_OC2Init

TIM_OC2Init(TIM3, &TIM_OCInitStructure);

这个函数用于初始化PWM模式下定时器输出的模式和相应参数的选择。它有两个参数,第一个是要初始化的定时器,第二个是选择定时器的输出模式的结构体指针:

  uint16_t TIM_OCMode;       

  uint16_t TIM_OutputState;  

  uint16_t TIM_OutputNState;  

  uint16_t TIM_Pulse;         

  uint16_t TIM_OCPolarity;    

  uint16_t TIM_OCNPolarity;  

  uint16_t TIM_OCIdleState;   

  uint16_t TIM_OCNIdleState;

它有8个成员,而在我们PWM输出的实验中,我们只需要去配置它的4个成员:

	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
 	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OCInitStructure.TIM_Pulse

第一个是TIM_OCInitStructure.TIM_OCMode,它是选择PWM模式,即控制CCMRx寄存器的结构体成员;

第二个是TIM_OCInitStructure.TIM_OutputState,它是选择是否使能通道的成员;

第三个是TIM_OCInitStructure.TIM_OCPolarity,它是配置CCERx寄存器,即控制有效电平的极性的成员;

第四个是TIM_OCInitStructure.TIM_Pulse,它是配置CCRx寄存器的数值,这个我们可以不使用,因为后面有函数可以配置它。

2.设置比较值函数:TIM_SetComparex

void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)

这个函数有两个参数,第一个参数是要设置的定时器,第二个参数是新的比较值,即CCRx寄存器的配置函数;

3.使能预装载寄存器:void TIM_OC2PreloadConfig

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)

这个函数用于使能预装载寄存器,即使能CCRx预装载寄存器的函数,即驱动CCRx寄存器工作的函数。它也有两个参数,第一个是定时器序号,第二个是定时器的预装载寄存器的使能。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值