1.通用定时器(TIM2-TIM5)主要特性
(1)==16 位(TIM3 和 TIM4)==或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
(2)16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介于 1 到 65536 之间。
(3)多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
(4)使用外部信号控制定时器且可实现多个定时器互连的同步电路。
(5)发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
(6)支持定位用增量(正交)编码器和霍尔传感器电路
(7)外部时钟触发输入或逐周期电流管理
2.功能实现
2.1输入捕获/输出比较
输入捕获的实现代码(获取key2的按下时间并打印)
//TIM5输入捕获初始化函数
void TIM5_ICInit(u8 PreemptionPriority, u8 SubPriority)
{
//开启GPIOA时钟线
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//开启TIM5时钟线
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
//引脚配置为复用模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
//初始化GPIO
GPIO_Init(GPIOA, &GPIO_InitStructure);
//将PA0引脚重映射到TIM5上
GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5);
//配置时基单元
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 10000-1;
TIM_TimeBaseInitStruct.TIM_Prescaler =