目录
一、定时器/计数器简介
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
1.通用定时器
高级定时器和通用定时器支持向上计数、向下计数和中央对齐计数三种模式,时钟源可选择内部或者外部
①使用TRGI作为输入时钟,称为“外部时钟模式1”
时钟来源可以是ETR引脚
其他定时器
CH1引脚边沿(TI1F_ED输入捕获单元)
CH1引脚(TI1FP1)和CH2引脚(TI1FP2)
通过TRGO映射以及选通ITR信号可以实现定时器级联,级联表见下
②参考引脚图使用外部时钟,将时钟源接定时器的ETR引脚称为“外部时钟模式2”
2.基本定时器
基本定时器仅支持向上计数模式,时钟源仅可选择内部
二、时基单元
PSC负责对输入时钟频率(默认72MHz)分频,写0代表1分频
CNT负责对分频后的频率进行计数
当计数到达ARR设定的值之后可以触发中断或事件,并且自动将CNT的值清零
三、定时器/计数器结构框图
四、程序运行途中改变分频系数后的时序
1.缓冲器
使用预分频缓冲器,当上一次计数结束后才装载新的分频系数,这样可以保证在完整的一次计数周期内前后计数频率是一致的
计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)
= CK_PSC / (PSC + 1) / (ARR + 1)
CK_PSC 是主频72MHz
PSC 是预分频系数
ARR 是自动重装值
2.预装器
预装功能作用和缓冲器类似,只有当记完这一次的数之后才会在下一次计数周期将新的计数值装入寄存器
有预装时序的结构在手册中带有阴影
3.RCC时钟树
五、计时计算方法
计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)
= CK_PSC / (PSC + 1) / (ARR + 1)
CK_PSC 是主频72MHz
CK_CNT是计数值
PSC 是预分频系数
ARR 是自动重装值