PWM的使用
hal的pwm使用
1.STM32CubeMx中timer的选择
参数以72M频率,TIM1,Channel1为例
Timers->TIM1->Clock Source 选择Internal Clock,Channel1 选择PWM Generation CH1
下方参数
Prescaler -> 71
Counter Period ->999
频率是72M/(71+1)/(999+1) = 1KHz
Pulse -> 500 占空比,此参数是0-999(Counter Period)的低电平比例,值越大,灯越暗,此参数尤为重要
CH Polarity High 高电平灯亮
2.代码中设置
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
开启时钟
仅仅上面的设置即可实现灯光的亮度,如果程序上需要设置
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwmVal);
pwmVal是占空比参数
此指令需要导入
#include "Legacy/stm32_hal_legacy.h"
3.实现呼吸灯
全局变量
uint16_t pwmVal = 0;
uint8_t dir = 1;
while循环中添加
while(pwmVal < 1000){
pwmVal ++;
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwmVal);
HAL_Delay(1);
}
while(pwmVal){
pwmVal --;
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwmVal);
HAL_Delay(1);
}
HAL_Delay(200);