文章目录
- 主要特点
- 通用定时器内部框图
- 功能描述
- 计数器模式
- 计数器时钟可选择时钟源
- PWM输入模式
STM32F103内部通用定时器包括TIMx (TIM2、 TIM3、 TIM4和TIM5)定时器
主要特点
16位向上、向下、向上/向下自动装载计数器
16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值
4个独立通道
- 输入捕获
- 输出比较
- PWM生成(边缘或中间对齐模式)
- 单脉冲模式输出
使用外部信号控制定时器和定时器互连的同步电路
如下事件发生时产生中断/DMA
- 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
- 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
- 输入捕获─ 输出比较
支持针对定位的增量(正交)编码器和霍尔传感器电路
触发输入作为外部时钟或者按周期的电流管理
通用定时器内部框图
CLK_PSC时钟通过预分频器,产生CNT计数器所需要的时钟。
计数器可设置向上计数或者向下计数,计数器溢出时触发事件,重装载器,更新计数值。
计数值会通过比较器,产生PWN波。
功能描述
1、可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。
2、这个计数器可以向上计数、向下计数或者向上向下双向计数。
3、此计数器时钟由预分频器分频得到。
4、计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。
时基单元包含:
- 计数器寄存器(TIMx_CNT)
- 预分频器寄存器 (TIMx_PSC)
- 自动装载寄存器 (TIMx_ARR)
自动装载寄存器 (TIMx_ARR) 是预先装载的,写或读自动重装载寄存器将访问预装载寄存器(根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置)预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。
当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。
计数器寄存器(TIMx_CNT) 由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时, CK_CNT才有效。
注:真正的计数器使能信号CNT_EN是在CEN的一个时钟周期后被设置。
预分频器寄存器 (TIMx_PSC) 可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个16位寄存器控制的16位计数器。这个控制寄存器带有缓冲器,它能够在工作时被改变。
计数器模式
1、向上计数模式
在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。每次计数器溢出时可以产生更新事件,在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位也同样可以产生一个更新事件。
设置TIMx_CR1寄存器中的UDIS位,可以禁止更新事件;
这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。
在UDIS位被清’0’之前,将不产生更新事件。但是在应该产生更新事件时,计数器仍会被清’0’,同时预分频器的计数也被请0(但预分频系数不变)。
当发生一个更新事件时:
硬件同时设置更新标志位(TIMx_SR寄存器中UIF位)
预分频器的缓冲区被置入预装载寄存器的值。
自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。
2、向下计数模式
在向下模式中,计数器从自动加载值(TIMx_ARR计数器的内容)开始向下计数,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。每次计数器溢出时可以产生更新事件,在TIMx_EGR寄存制器)设置UG位,也同样可以产生一个更新事件。
设置TIMx_CR1寄存器的UDIS位可以禁止UEV事件时更新影子寄存器。
因此UDIS位被清为’0’之前不会产生更新事件。
然而,计数器仍会从当前自动加载值重新开始计数,同时预分频器的计数器重新从0开始(但预分频系数不变)。
当发生一个更新事件时:
硬件同时设置更新标志位(TIMx_SR寄存器中UIF位)
预分频器的缓存器被置入预装载寄存器的值。
当前的自动加载寄存器被更新为预装载值(TIMx_ARR寄存器中的内容)。数器重载入之前被更新,因此下一个周期将是预期的值。
3、中央对齐模式(向上/向下计数)
在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。
计数器时钟可选择时钟源
内部时钟(CK_INT)
外部时钟模式1:外部输入脚(TIx)
外部时钟模式2:外部触发输入(ETR)
内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。
PWM输入模式
两个ICx信号被映射至同一个TIx输入。这两个ICx信号为边沿有效,但是极性相反。其中一个TIxFP信号被作为触发输入信号,而从模式控制器被配置成复位模式。
例如,你需要测量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器),具体步骤如下(取决于CK_INT的频率和预分频器的值)
- 选择TIMx_CCR1的有效输入:置TIMx_CCMR1寄存器的CC1S=01(选择TI1)。
- 选择TI1FP1的有效极性(用来捕获数据到TIMx_CCR1中和清除计数器):置CC1P=0(上升沿有效)。
- 选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择TI1)。
- 选择TI1FP2的有效极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有效)。
- 选择有效的触发输入信号:置TIMx_SMCR寄存器中的TS=101(选择TI1FP1)。
- 配置从模式控制器为复位模式:置TIMx_SMCR中的SMS=100。
- 使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。
由于只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1/TIMx_CH2信号。