16

基于STM32F030F4P9和STM32 CUBEMX 输出PWM波形

 4 years ago
source link: http://www.cnblogs.com/BlogsOfLei/p/12636590.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

STM32F030F4P9定时器功能比较丰富,在此记录项目中使用其自动输出PWM波形(频率:50HZ)。CubeMX配置定时器如下图说明。

6jYJfez.png!web

Eb6juaz.png!web

在此定时器基础时钟为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.CCR3 = 800;   //占空比为 800us/20ms


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK