抱歉各位久等,学校比赛有点多,咕咕咕了好久。
首先在原理图里找到两个led的引脚 分别别是PE5和PB5,但是很遗憾PE5没有定时器引脚,所以只能选择PB5
如图,打开TIM3的PWM_Channel2通道
然后打开外部晶振,因为要配置时钟树,外部晶振打开和使能调试串口可以在我上一篇帖子里找到。
记住要切换到外部时钟,
否则频率会有问题
配置完始终就可以配置频率了
计数模式选择向上计数,PSC和ARR是计算PWM频率的主要参数,具体情况自己根据实际应用场景来调整。
Fpwm = 100M / ((arr+1)*(psc+1))(单位:Hz) 如:
3. 主频=100M
4. arr=100
5. psc=1000
100,000,000/100/1000=1000Hz
duty circle = TIM3->CCR1 / arr(单位:%)
TIM3->CCR1 是捕获比较寄存器值
从下面代码可以看出TIM3->CCR1 就是对应的sConfigOC.Pulse
arr对应htim5.Init.Period = 999;
psc对应htim5.Init.Prescaler = 99;
如果 arr=1000,TIM3->CCR1=500则pwm的占空比为50%,通过修改CCR1可以修改占空比,修改arr可以修改频率
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
复制代码 这一句是使能PWM发生器- __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,pwm_val);
复制代码 装载给定的值使产生pwm对应通道
至此,按下复位键就可以看到小灯在愉快的呼吸了。
至于FREERTOS系统上的代码会更新上来的
|