最近在做红外接收,不是一般的遥控器编码,在进入外部中断后我先关掉外部中断最后再打开,调试发现遥控器按一下后程序一直进入外部中断而出不来,怎么回事呢???
void EXTI0_IRQHandler(void) //收到红外时开启定时器
{
u8 k;
u16 Rec_Temp;
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//关闭外部中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd=DISABLE;
NVIC_Init(&NVIC_InitStructure);
Delay_us(875);
Rec_Temp<<=1;
Rec_Temp|=PAin(0);
for(k=0;k<11;k++)
{
Delay_us(1750);
Rec_Temp<<=1;
Rec_Temp|=PAin(0);
}
Rec=Rec_Temp;
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//重新打开外部中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
|