项目用到了
想做一个记录备忘
定时器支持的频率
默认情况下,都按最大接口时钟频率*2
特殊情况请看这个寄存器
做普通的定时
举例说明
需要一个 1s 周期的定时器
我们先设置 TIMx_ARR 寄存器值为 9999(10000-1)
即当 TIMx_CNT 从 0 开始计算,刚好等于 9999 时生成事件,总共计数 10000 次
那么如果此时时钟源周期为 100us 即可得到刚好 1s 的定时周期
TIMx_PSC 寄存器值使得 CK_CNT 输出为 100us 周期(10000Hz)
预分频器的输入时钟 CK_PSC 为 108MHz,所以设置预分频器值为(10800-1)即可
做PWM输出
注意TIM1和8与其他的通用定时器的时钟频率不一样
TIM8和1的定时器的时钟源频率是216MHz
其他的是108Mhz
以TIM1或8为例(不考虑分频)
定时器频率为=216Mhz/(TIM_Prescaler+1)
以其他的通用定时器为例
定时器频率为=108Mhz/(TIM_Prescaler+1)
定时器的定时周期(也就是以定时器的频率,计多少次数,算记满的意思)
占空比和这个定时周期有关系(50%就取定时周期的一半)
占空比为:(Pulse+1)/(Period+1),Pulse就是设置的寄存器值,Period是定时周期
做PWM输入捕获
一个定时器最多做一个PWM输入捕获,普通捕获可以做4路
TIM1或者TIM8
能够捕获的最低频率f=216MHz/定时周期(不考虑分频)
e.g 定时周期=65535的时候,最低支持捕获的频率216Mhz/65535 = 3295Hz
其他的定时器
能够捕获的最低频率f=108MHz/定时周期(不考虑分频)
e.g 定时周期=65535的时候,最低支持捕获的频率108Mhz/65535 = 1647Hz