暫時沒有想到好的辦法,大家想到更好的方法可以跟帖留言
tim2的配置
- void TIM2_Config(u16 arr,u16 pre)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
-
- TIM_TimeBaseInitStructure.TIM_ClockDivision=0;
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
- TIM_TimeBaseInitStructure.TIM_Period=(arr-1);
- TIM_TimeBaseInitStructure.TIM_Prescaler=(pre-1);
- TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;
-
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
-
- NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
-
- NVIC_Init(&NVIC_InitStructure);
-
- TIM_Cmd(TIM2, ENABLE);
-
- TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
- }
復制代碼
tim2的中斷服務函數
- void TIM2_IRQHandler(void)
- {
- static u8 led=0,led2=0;
- static u8 flag=0;
- if(TIM_GetITStatus(TIM2, TIM_IT_Update)==1)
- {
- flag++;
- led=~led;
- if(led==0)
- {
- LED1_ON();
- }
- else
- {
- LED1_OFF();
- }
- if(flag==2)
- {
- led2=~led2;
- flag=0;
- }
- if(led2==0)
- {
- LED3_ON();
- }
- else
- {
- LED3_OFF();
- }
-
- TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
- }
- }
復制代碼
|