后来设置成PA12脚外接脉冲计数也进入不了中断,但直接能读出TIM1 COUN1=TIM1->CNT 里面的值,能看到TIM1一直在计数,哪位大侠指导一下啊
怎么才能计TIM1脉冲计数产生中断呢??
设置如下:
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=TIM1_TRG_COM_TIM11_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_TIM10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
///************************************************************
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_TIM1);
TIM_DeInit(TIM1);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//***************************************************************************************
TIM_UpdateDisableConfig(TIM1, ENABLE);
TIM_UpdateRequestConfig(TIM1, TIM_UpdateSource_Global);
TIM_SelectInputTrigger(TIM1, TIM_TS_ETRF);//External Trigger input
TIM_ITConfig(TIM1,TIM_IT_Trigger,ENABLE);
TIM_SetCounter(TIM1, 0);
TIM_ClearFlag(TIM1,(TIM_FLAG_Update|TIM_FLAG_Trigger));
TIM_Cmd(TIM1, DISABLE);
void TIM1_UP_TIM10_IRQHandler(void)
{ //puts("11UP");
if(TIM_GetITStatus(TIM1,TIM_IT_Update)==SET)
{
RTC_WakeUpCmd(DISABLE);
n_Counter=T_Counter;
T_Counter=0;
RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line22);
TIM_ClearITPendingBit(TIM1, TIM_FLAG_Update); //???
TIM1->CR1&=0XFFFE; //¹Ø±Õ¶¨Ê±Æ÷1
Flag=1; //1s±ê־λÖÃ1
TIM1->SR&=0XFFFE; //Í˳ö¶¨Ê±Æ÷1Òç³öÖжÏ֮ǰ,±ØÐëÇå³ý¶¨Ê±Æ÷1µÄÒç³ö±ê־λ
}
}
void TIM1_TRG_COM_TIM11_IRQHandler(void)
{ puts("11TR");
if(TIM_GetITStatus(TIM1,TIM_IT_Trigger)==SET)
TIM1->DIER&=0XFFBF;
TIM1->DIER|=0X0001;
RTC_WakeUpCmd(ENABLE);
TIM1->SR&=0XFFBF;
}
}
|