学习目标
- 掌握定时器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占空比