学习目标
- 掌握定时器I配置方式
- 掌握定时器占空比输出
学习内容
需求

以PA5对应的LED4为例,我们做一个呼吸灯的效果。
我们采用TIMER1进行实现:

Timer配置
配置Timer通道输出

配置周期和分频计数

- psc为分频系数,这里的值需要写入到寄存器中的
- period为周期计数,这里的值需要写入到寄存器中的
这里再引入一个点,系统时钟和Timer自己的时钟,系统时钟是系统主频,Timer自己有自己的主频,这个之间存在一个比值。系统主频为168MHZ, Timer2的主频为42MHZ,差值为4倍。标准库提供了倍频方案,HAL库没有,因此计算时,我们需要加入这个因素。
例如:希望 1秒钟执行100次,通常解决思路如下:

但是计数值不可以超过65535,需要做分频:

表达的意思是100秒执行10000次,也就是1秒钟执行100次
但是在这里还要注意一个倍频的问题,当前Timer2存在2倍差距。这里100秒执行10000次,就变成了200秒执行10000次。所以,倍频方面需要再次做处理。


因此,如果要做到1秒执行100次,那么

Timer编码
提供PWM更新的API
pwm更新
/* USER CODE BEGIN 1 */
void Tim2_ch1_duty(float duty) {
    uint32_t count = htim2.Init.Period + 1;
    uint32_t pulse = duty * count / 100 - 1;
    __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, pulse);
}
/* USER CODE END 1 */练习题
- 测试PWM占空比










![【算法每日一练]-图论(保姆级教程篇14 )#会议(模板题) #医院设置 #虫洞 #无序字母对 #旅行计划 #最优贸易](https://img-blog.csdnimg.cn/direct/dc616bd3440146dca36838bed4baecc3.png)








