1、定时器初始化
#include "bsp_time.h"void BSP_TIM3_INIT(uint16_t arr,uint16_t psc){//打开时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//定时器初始化{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_Period = arr-1; //自动重装载值TIM_TimeBaseInitStructure.TIM_Prescaler = psc-1; //定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);}//NVIC初始化{NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级1NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}//使能定时器和打开中断{TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断TIM_Cmd(TIM3,ENABLE); //使能定时器3}}
2、中断函数使用
//定时器3中断服务函数void TIM3_IRQHandler(void){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断{}TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位}
