基于STM32F030F4P9和STM32 CUBEMX 输出PWM波形
STM32F030F4P9定时器功能比较丰富,在此记录项目中使用其自动输出PWM波形(频率:50HZ)。CubeMX配置定时器如下图说明。
在此定时器基础时钟为48MHZ,配置中不做分频处理,预分频系数为48,定时器计数器寄存器为20000,可求得周期为:
T = ( ( 1 / (48Mhz / 48) ) * 20000) = 20ms
在PWM输出配置选项中,改变Pulse可改变PWM的占空比。CH Polarity配置当计数器中的值小于Pulse时,输出高电平,
CH Idle State配置PWM输出空闲时的状态,此处Reset为低电平状态。
在程序中如果要动态改变PWM的占空比,只需改变Pulse值,但在cubeMX自动生成的库中暂时没有找到相关函数,
查手册可知,通过改变CCRx寄存器可改变PWM的Pulse值,此处使用第三通道,所以可以改变定时器寄存器CCR3,
从而改变PWM的占空比,注意:CCR3寄存器值会在定时器发生更新时间时(注意配置中需要开启自动重装载寄存器使能位),
才会生效。例如改变占空比为800us/20ms:
htim1.Instance->CCR3 = 800; //占空比为 800us/20ms