上节提到常规定时器包括:基本定时器、通用定时器和高级定时器。
基本定时器
基本定时器:没有任何对外输入/输出,主要用作时基计数、定时。
通用定时器
通用定时器:除了基本定时器的时基功能外,还可对外做输入捕捉、输出比较以及连接其它传感器接口【编码器和霍尔传感器】。
高级定时器
高级定时器:此类定时器的功能最为强大,除了具备通用定时器的功能外,还包含一些与电机控制和数字电源应用相关的功能,比方带死区控制的互补信号输出、紧急刹车关断输入。
了解STM32定时器
从功能模块整体了解STM32定时器
从寄存器特色了解STM32定时器
定时器中的PSC/ARR/RCR/CCR寄存器具有预装载功能,即每类寄存器具有双寄存器机制;
分别由各自的影子寄存器和预装载寄存器组成;
影子寄存器是真正起作用的寄存器,预装载寄存器为影子寄存器提供缓冲,提前做数据或指令准备;
用户操作的永远只是预装载寄存器!
在开启预装载功能时,影子寄存器的内容须借助更新事件完成更新!
关于预装载功能的开启或关闭,往往也犹如影子、如幽灵般影响到我们的定时器应用开发。充分了解预装载机制与更新事件很重要!
一、时基单元
基本定时器、通用定时器的时基单元由3部分组成: 分频器、计数器、自动重装器。
TIMx_PSC分频寄存器:设置分频器对时钟源的分频比
TIMx_CNT 核心计数器 :对从分频器过来的时钟进行计数
TIMx_ARR自动重装寄存器:为计数器设置计数边界或重装值。比如计数器向上计数时,记到多少发生溢出;向下计数时从多少开始往下计数。
TIMx_ARR/ TIMx_PSC 都分别由影子寄存器和预装载寄存器组成即使用双寄存器机制。
影子寄存器:乃TIMER运行中真正起作用的寄存器,即实际寄存器。
预装载寄存器:乃用户操作的寄存器,提前为影子寄存器做数据准备。
在发生更新事件时,预装载寄存器的数据拷贝到 影子寄存器发挥作用
STM32高级定时器时基单元
相比通用定时器,高级定时器时基单元增加了 重复计数器 和对应的寄存器TIMx_RCR,重复计数器是个向下计数器;当计数器发生 TIMx_RCR+1次溢出动作后 会触发更新事件。
二、计数器的时钟源
内部时钟TIMx_CLK
内部触发输入:ITRx
外部时钟源模式1示例:TI2上升沿
外部时钟源模式2
各种时钟源的寄存器配置