今天的定时器也是我们常用的一个32外设,PWM更不用说,电机的转速调节,家里的电灯亮度调节基本上用到的就是通过PWM。
一、定时器
1.定义
设置等待时间,到达后则执行指定操作的硬件。
2.STM32F407的定时器有以下特征
具有基本的定时功能,也有PWM输出(灯光亮度控制、电机的转速)、脉冲捕获功能(红外捕捉)。
2个高级控制定时器、10个通用定时器和2个基本定时器
a.高级控制定时器(TIM1和TIM8)
具有16位定时器功能,也具有PWM输出高级控制功能,一个定时器支持多路的PWM输出。
b.通用定时器(TIM2到TIM5)具有16位定时功能,也具有PWM输出控制功能,一个定时器支持1路的PWM输出。
c.通用定时器(TIM9到TIM14)具有16位定时功能,也具有PWM输出控制功能,一个定时器支持1路的PWM输出。
d.基本定时器(TIM6和TIM7)具有16位定时功能
注:TIM是TIMER英文的缩写。
二、定时器初始化
1.选择时钟源,并初始化定时器分频值与定时时间
/* TIM3 clock enable ,定时器3时钟使能*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* Time base configuration ,定时器基本配置*/
TIM_TimeBaseStructure.TIM_Period = (10000/1000)-1; //定时时间的设置[非常重要],中断频率为1000Hz,也就是定时时间为1ms
TIM_TimeBaseStructure.TIM_Prescaler = 8400-1; //预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分频,也称之为二次分频,当前是1分频,说白了不分频,不降低频率
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数的方法
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化