PWM实验
需求:使用PWM点亮LED1实现呼吸灯效果。
LED灯为什么可以越来越亮,越来越暗?
答案:这是由不同的占空比决定的。
如何计算周期/频率?
假如频率为 2kHz ,则:PSC=71,ARR=499
首先要知道,LED1连接到哪个定时器的哪一路?
开始实战!
- 设置时钟
- 设置定时器
注意:
要把极性设置为Low,因为LED灯是低电平才亮
代码如下
// 定义变量
uint16_t pwmVal=0; // 调整PWM占空比
uint8_t dir=1; // 设置改变方向。1:占空比越来越大;0:占空比越来越小
// 使能 Timer4 第3通道 PWM 输出
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
// while循环实现呼吸灯效果
while (1)
{
/* USER CODE END WHILE */
HAL_Delay(1);
if(dir){
pwmVal++;
}else{
pwmVal--;
}
if(pwmVal > 500){
dir = 0;
}
if(pwmVal == 0){
dir =1;
}
// 修改比较值,修改占空比
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
/* USER CODE BEGIN 3 */
}