一、打开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呈现出呼吸灯的效果
|