赞
踩
首先找到开发板的LED引脚
LED | 引脚 |
---|---|
LED0 | PB5 |
LED1 | PE5 |
很显然有两个LED灯的引脚,注意,当我们在选择到底用哪个led显示的时候,一定要判断这个LED灯的引脚是否有pwm输出的功能!!!(如果选错了,则灯会一直不亮)
右键选择PE5的引脚,显然没有TIM定时器功能,不能选用PE5
右键选择PB5引脚,有TIM3_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可以修改频率
确保以下配置和我的一样
编译下载即可,附上循环条件中的代码
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呼吸灯
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。