一、打开cubemx
LED0和LED1连接在PB0和PB1上,刚好是TIM3的PWM通道3和通道4
二、配置PWM参数
开启TIM3的通道3和通道4
配置PWM的频率为108000000/(108*500)=20kHZ
配置PWM通道3和通道4
在程序中改变pulse的值,即可改变占空比pulse的取值范围在0-count period之间
三、生成代码
在main函数中增加代码,开启PWM输出
在tim.c中增加pwm控制函数
void SetPwm(uint16_t pwm1,uint16_t pwm2)
{
TIM3->CCR3=pwm1;
TIM3->CCR4=pwm2;
}
也可以使用hal库进行修改,但这样比较复杂
void SetPwm(uint16_t pwm1,uint16_t pwm2)
{
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.Pulse = pwm1;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
sConfigOC.Pulse = pwm2;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
}
在主函数添加呼吸灯代码,添加完成如下
四、下载代码观看现象
将代码下载到开发板中可以看到LED0和LED1呈现出呼吸灯的效果