【STM32学习笔记】TIM定时器

1.定时器简介

定时器功能:定时、输入比较、输入捕获、互补输出

定时器分类:基本定时器、通用定时器、高级定时器

定时器资源:

F103系列:两个高级定时器TIM1,TIM8、4个通用定时器TIM2~5、2个基本定时器TIM6,TIM7

2.基本定时器功能框图

1.基本定时器功能简介

1-计数器16bit,只能向上计数,只有TIM6,TIM7

2-没有外部的GPIO,是内部资源,只能用来定时

3.-时钟来自PCLK1,为72M,可实现1~65536分频

2.基本定时器功能框图讲解

1-时钟源

时钟源来自RCC的TIMx_CLK(属于内部的CK_INT)

2-控制器

1-控制器用于控制定时器的:复位、使能、计数、触发DAC

2-涉及到的寄存器为:CR1/2(控制寄存器1/2)、DIER(中断使能寄存器)、EGR(事件产生寄存器)、SR(状态寄存器)

3-时基

包括预分频器(PSC)、计数器(CNT)、自动重装载寄存器(ARR)。

原始时钟: CK_INT

PSC时钟: CK_PSC

计数时钟: CK_CNT

预分频系数:PSC+1

4-预分频器

1-16位的预分频器PSC对内部时钟CK_PSC进行分频之后,得到的计数器时钟CK_CNT=CK_PSC/(PSC+1)

2-计数器CNT在计数器时钟的驱动下开始计数,计数一次的时间为1/CK_CNT

计数器时间为(ARR+1)/CK_CNT

5-计数器、自动重装载寄存器

定时器使能(CEN置1)后,计数器CNT在CK_CNT驱动下计数,当TCNT值与ARR的设定值相等时就自动生成事件并CNT自动清零,然后自动重新开始计数。

6-影子寄存器

1-PSC和ARR都有影子寄存器,功能框图上有个影子

2-影子寄存器的存在起到一个缓冲的作用, 用户值->寄存器->影子寄存器->起作用,如果不使用影子寄存器则用户只在写道寄存器之后则立即起作用

ARR影子,TIMx_CR1 APRE位控制( 缓冲位)

7-定时时间的计算

1、PSC=72-1,定时器频率=72M/(PSC+1)=1MHZ

2、ARR = 1000-1,从0计数到999,则计了1000次

3、中断周期T=1000*1/1000000 = 1ms

8-时基初始化结构体

TIM_TimeBaseInitTypeDef

1
2
3
4
5
6
7
8
typedef struct
{
uint16_t TIM_Prescaler; //分频因子
uint16_t TIM_CounterMode; //计数模式,基本定时器只能向上计数
uint32_t TIM_Poriod; //自动重装载值
uint16_t TIM_ClockDivision; //外部输入时钟分频因子,基本定时器没有
uint8_t TIM_RepetitionCounter;//重复计数器,基本定时器没有,
}TIM_TimeBaseInitTypeDef;