void TIMER_Mode3_Configuration() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit(TIM3); TIM_TimeBaseStructure.TIM_Period=2000; //ARR的值 TIM_TimeBaseStructure.TIM_Prescaler=36000-1; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM3, ENABLE);//使能ARR预装载缓冲器 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Toggle; //输出比较触发模式 TIM_OCInitStructure.TIM_Channel=TIM_Channel_1; TIM_OCInitStructure.TIM_Pulse=1000; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OCInit(TIM3, &TIM_OCInitStructure); TIM_ITConfig(TIM3,TIM_IT_CC1 | TIM_IT_Update , ENABLE); //允许通道1产生中断和溢出时产生中断 TIM_Cmd(TIM3, ENABLE); //开启时钟 } void TIM3_IRQHandler(void) { if (TIM_GetITStatus(TIM3,TIM_IT_CC1)!=0) //计数器与比较器的值匹配时 { TIM_ClearITPendingBit(TIM3,TIM_IT_CC1); LED3=1; Delay_ms(100); LED3=0; Delay_ms(100); } else if (TIM_GetITStatus(TIM3,TIM_IT_Update)!=0) //溢出中断时 { TIM_ClearITPendingBit(TIM3,TIM_IT_Update); LED2=1;LED3=1;LED4=1;LED5=1; Delay_ms(100); LED2=0;LED3=0;LED4=0;LED5=0; Delay_ms(100); } }