前 言
本文仅供个人参考记录复习,如有错误或者模糊的地方欢迎指教.
TIM计时器在嵌入式系统中扮演着十分重要的角色,通常用于定时、计数和触发事件,为系统提供了精确的时间控制和事件触发功能。
TIM计时器
TIM通常由微控制器或微处理器的外围设备控制器提供支持。TIM的功能包括生成精确的时间延迟、周期性的触发事件、PWM波形生成等。还可以连接到系统时钟源,并可以根据需要进行分频。TIM还可以与其他外设(如ADC、DAC等)或中断控制器进行联动,从而实现更复杂的系统功能。
根据复杂度与应用场景分为基本定时器、通用定时器和高级定时器。
基本定时器
基本定时器通常是简单的计数器,其计数值与时钟频率成正比。它可以用于生成精确的时间延迟或周期性触发事件,例如在一定时间间隔内执行某个任务。TIM基本计时器可以与DAC协同工作,实现定时产生模拟电压或电流的应用。
基本定时器通常只有一个计数通道。且只支持向上计数模式。
时钟输入由系统时钟源提供,基本定时器时钟源是内部的RCC时钟。通过预分频器可以对定时器的时钟信号进行分频,以降低时钟频率。计数器根据时钟输入和预分频器的设置进行计数。当计数器达到设定的值时即计数器的值与重装载寄存器值相等时,就会触发相应的更新中断与更新事件。
通用定时器
通用定时器是功能更强大的定时器,通常具有多个计数通道和更多的功能选项。它可以用于生成多个不同的定时/计数信号,并支持更复杂的功能,如输入捕获、输出比较、PWM波形生成等。通用定时器通常可以根据需求进行灵活配置。
通用定时器主要工作流程与基本定时器类似。
通用定时器的时钟源可以是内部的RCC时钟,也可以是外部时钟TIMx_ETR或者其他定时器ITR信号(因为TRGO可以连接其他定时器即当前定时器为其他定时器提供时钟源)以及TI1F_ED、TI1FP1、TL2FP2。
下半部分左边为输入捕获电路,可以用于测量输入方波的频率;右边为输出比较电路,可以用于输出PWM波形和驱动电机。
高级定时器
高级定时器是一种更复杂和功能更丰富的定时器类型。它通常具有更多的计数通道、更高的分辨率和更多的功能选项。高级定时器可以实现更精确的时间控制和更复杂的事件触发,适用于需要高精度定时和计数的应用。
高级定时器主要工作流程与通用定时器类似。
高级定时器存在一个重复计数器,可以实现隔多个周期才更新一次(对于基本定时器和通用定时器都是一个周期更新一次),这大大的增加了定时时间。
高级定时器还有DTG电路,可以防止上下管同时导通,避免短路,保护功率半导体器件,同时通过准确控制死区时间,提高整个功率转换系统的稳定性和可靠性。
刹车失效事件:并且如果TIMx_BKIN引脚产生的刹车信号或内部时钟失效产生故障,控制电路就会自动切断输出,防止发生意外。
时基单元
时钟输入模式
内部时钟模式:RCC内部时钟
外部时钟模式1:触发输入ETR外部时钟、ITRx其他定时器、TIx输入捕获通道
外部时钟模式2:ETR外部时钟
编码器模式:TIx输入捕获通道
计数模式
向上计数
计数器从初始值开始逐渐增加,直到达到设定的溢出值,然后重新从初始值开始。即计数器每次计数都会向上加一,直到达到最大值后溢出重置。
向下计数
计数器从初始值开始逐渐减少,直到达到零或者设定的溢出值,然后重新从初始值开始。即计数器的每次计数都会向下减一,直到达到最小值后溢出重置或者回到设定的溢出值。
中央对齐
计数器从初始值开始逐渐增加,直到达到设定的溢出值,然后使设定的溢出值为初始值,计数器从初始值开始逐渐减少,直到达到零。即计数器开始时每次计数都会向上加一,直到达到最大值后改变计数模式成每次计数都会向下减一,直到达到最小值后又继续改变。
时序
预分频器时序
计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
计数器时序
(内部时钟分频因子为2,即分频系数为2)
计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)
无预装时序的计数器(无缓存寄存器)
(当ARPE=0时的更新事件(TIMx_ARR没有预装入) )
有预装时序的计数器(有缓存寄存器)
(当ARPE=1时的更新事件(预装入了TIMx_ARR) )