STM32F4 配置寄存器输出PWM

PWM

PWM用于控制传递给负载的功率,而不改变传递给它的电压或电流。它通过改变方波信号的占空比(导通时间与总时间的比)来工作。电力电子课程中会有所涉及。

使用STM32F4生成PWM波

STM32F4微控制器具有多个定时器可用于生成PWM波。本例使用TIM3在引脚PA6上生成PWM波。

第1步:初始化定时器

首先,通过设置其分频器和周期值来初始化定时器。分频器值确定计时器的频率,而周期值确定PWM波的频率。

RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // 使能TIM3时钟
TIM3->PSC = 839; // 设置分频器值
TIM3->ARR = 999; // 设置周期值

这里,使用TIM3是一个16位定时器,并且有四个通道,可以用于生成四个独立的PWM波形。分频器值设置为839,此时的计时器频率为Freq = 84MHz /(839 + 1)= 100kHz。周期值设置为999,则输出的PWM频率为100kHz /(999 + 1)= 100Hz

第2步:配置PWM波

接下来,我们需要通过设置占空比和PWM模式来配置PWM波。占空比是通过改变捕获/比较寄存器(CCR)的值来设置的。 PWM模式是通过配置输出比较模式(OCMode)和脉冲宽度(PWM占空比)来设置的。

TIM3->CCR1 = 499; // 设置占空比值
TIM3->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // 设置PWM模式
TIM3->CCER |= TIM_CCER_CC1E; // 启用PWM输出

此处将占空比设置为50%((499+1)/(999+1)),即输出在一半时间内高电平,在另一半时间内低电平。
使用PWM模式1(TIM_CCMR1_OC1M_1)和PWM模式2(TIM_CCMR1_OC1M_2),二者共同作用时,生成的PWM值低脉冲宽度等于CCR值和ARR值之差。通过在CCER寄存器中设置CC1E位来启用PWM输出。

第3步:启动定时器

最后,通过启用其计数器来启动计时器。

TIM3->CR1 |= TIM_CR1_CEN; // 启用定时器计数器

即通过在CR1寄存器中设置CEN位来启用计时器计数器。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容