一、Cube配置
以TIM5为例,其他有PWM输出功能的定时器类似。
1.1 计数器配置
修改预分频系数(PSC)和计数器周期(Counter Period)
查看数据手册,TIM5挂载在APB1总线上,我设置的APB1=84Mhz。
P W M 周期 = I n t e r n a l C l o c k / P S C ∗ C o u n t e r P e r i o d = 84 M h z / 42 ∗ 1000 = 2 K h z PWM周期=InternalClock/PSC*Counter Period=84Mhz/42*1000=2Khz PWM周期=InternalClock/PSC∗CounterPeriod=84Mhz/42∗1000=2Khz
所以PWM周期为2Khz
1.2 PWM配置
初始化PWM占空比
占空比 = P u l s e / C o u n t e r P e r i o d = 500 / 1000 = 50 % 占空比=Pulse/Counter Period=500/1000=50\% 占空比=Pulse/CounterPeriod=500/1000=50%
二、程序设计
2.1 开启PWM
Cube只是帮我们配置,并不会自动帮我们开启PWM,所以需要我们手动开启PWM。
HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1); // 开启通道1 PWM
HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_2); // 开启通道2 PWM
2.2 和PWM设置相关的函数
2.2.1 开启关闭PWM
HAL_TIM_PWM_Start(); // 开启PWM
HAL_TIM_PWM_Stop(); // 关闭PWM
2.2.2 修改PWM周期
for(i=100;i>0;i--)
{
__HAL_TIM_SET_COMPARE(&htim14,TIM_CHANNEL_1,i*10); // 修改PWM占空比,实现呼吸灯效果
osDelay(10); //延时10ms
}