void TIM2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM2 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Time base configuration */ //这个就是自动装载的计数值,由于计数是从0开始的,周期为100us TIM_TimeBaseStructure.TIM_Period = (100 - 1);//10kHz // 这个就是预分频系数,当由于为0时表示不分频所以要减1 TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);//1MHz // 高级应用本次不涉及。定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx) // 使用的采样频率之间的分频比例 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //向上计数 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //初始化定时器5 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* Clear TIM5 update pending flag[清除TIM5溢出中断标志] */ TIM_ClearITPendingBit(TIM2, TIM_IT_Update); /* TIM IT enable */ //打开溢出中断 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* TIM5 enable counter */ TIM_Cmd(TIM2, ENABLE); //计数器使能,开始工作 /* 中断参数配置 */ NVIC_TIM2Configuration(); }
void Delay_Init(void) { NVIC_TIM2Configuration(); //配置中断 Timer2_Configuration(); //定时器2初始化 }