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:定时器计数方式,因人而异,我一般使用向上计数