定时器初始化
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStruct;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);//使能时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
/* 时基配置 */
TIM_TimeBaseStructure.TIM_Period = (0XFFFF) ; //设置计数器
TIM_TimeBaseStructure.TIM_Prescaler = (48-1); //设置预分频的值48,1Mhz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;//通道2
TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;//上升沿捕获
TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;//映射到TI1上
TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;//配置输入分频,不分频TIM_ICPSC_DIV1
TIM_ICInitStruct.TIM_ICFilter = 0;//配置输入滤波器,不滤波
TIM_ICInit(TIM14, &TIM_ICInitStruct);
/* 使能TIM3全局中断*/
NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn ;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM14,TIM_IT_Update,ENABLE);//允许更新中断
TIM_ITConfig(TIM14,TIM_IT_CC1,ENABLE);//允许捕获比较2中断
TIM_ClearITPendingBit(TIM14, TIM_IT_Update);//清除更新中断
TIM_ClearITPendingBit(TIM14, TIM_IT_CC1);//清除捕获中断
TIM_Cmd(TIM14, ENABLE);
|