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,此时的计时器频率为。周期值设置为999,则输出的PWM频率为。
第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位来启用计时器计数器。