首先找到开发板的LED引脚
LED | 引脚 |
---|---|
LED0 | PB5 |
LED1 | PE5 |
很显然有两个LED灯的引脚,注意,当我们在选择到底用哪个led显示的时候,一定要判断这个LED灯的引脚是否有pwm输出的功能!!!(如果选错了,则灯会一直不亮)
第一步 打开cubemx创建项目,选择好咱们相应开发板的型号
第二步 配置SYS、RCC(选择外部晶振)、时钟树
第三步 选择合适的led引脚作为pwm输出
右键选择PE5的引脚,显然没有TIM定时器功能,不能选用PE5
右键选择PB5引脚,有TIM3_CH2通道,选中即可
第四步 配置TIM_CH2的参数
在 Parameter Settings 页配置预分频系数为 72-1,计数周期(自动加载值)为 500-1,定时器溢出频率,即PWM的周期,就是 72MHz/72/500 = 2kHz
PWM频率:
Fpwm =Tclk / ((arr+1)*(psc+1))(单位:Hz)
arr 是计数器值
psc 是预分频值
占空比:
duty circle = TIM3->CCR1 / arr(单位:%)
TIM3->CCR1 用户设定值
比如 定时器频率Tclk = 72Mhz arr=499 psc=71 那么PWM频率就是720000/500/72= 2000Hz,即2KHz
arr=499,TIM3->CCR1=250 则pwm的占空比为50%
改CCR1可以修改占空比,修改arr可以修改频率
最后点击工程管理
用KEIL5打开项目,点击魔法棒配置
确保以下配置和我的一样
配置完毕,开始书写代码
编译下载即可,附上循环条件中的代码
while (1)
{
while (pwmVal< 500)
{
pwmVal++;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal); //修改比较值,修改占空比
HAL_Delay(1);
}
while (pwmVal>0)
{
pwmVal--;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal); //修改比较值,修改占空比
HAL_Delay(1);
}
HAL_Delay(200);
}
实验最终现象:
led呼吸灯