STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。其中STM32F10X系列有高级控制定时器(TIM1和TIM8)、通用定时器(TIMx)、基本定时器(TIM6和TIM7)。定时器对我来说有三个用途:普通的定时器中断、产生PWM波、输入捕获。这一笔记主要讲普通定时器中
一、首先打开相应的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
二、设置定时器TIM_TimeBaseInit初始化定时器的时间基数
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
第一个参数用于选择TIM外设,可以是TIM3、TIM4、TIM5。
第二个参数是一个指向TIM_TimeBaseInitTypeDef的结构体指针,他包含了时间基数的配置信息。
typedef struct
{
u16 TIM_Period;
u16 TIM_Prescaler;
u8 TIM_ClockDivision;
u16 TIM_CounterMode;
} TIM_TimeBaseInitTypeDef;
TIM_Period:设置自动重装载寄存器周期的值,0x0000到0xFFFF;
TIM_Prescaler: 设置定时器的预分频系数, 0x0000到0xFFFF;
TIM_ClockDivision:设置时钟分频系数,TIM_CKD_DIVx (x = 1、2、4);
TIM_CounterMode:定时器计数方式,因人而异,我一般使用向上计数,取值如下