程序有两个外部中断,红外抢占优先级1,按键抢占优先级0,按键的IO已配置,中断也初始化,按下键后,红外可以进入中断程序,而按键不能进入中断,请指教
以下是按键中断配置和中断初始化,求帮忙看看是哪里有问题,只要求按下中断点灯即可。
IO配置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//开启时钟
GPIO_InitStrcture.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStrcture.GPIO_Mode=GPIO_Mode_IN_FLOATING;//
GPIO_InitStrcture.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStrcture);
中断配置:
void KEY_EXIT_INT(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//复用时钟开启
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
EXTI_InitStructure.EXTI_Line=EXTI_Line3;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn; //使能按键KEY1所在的外部中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
中断程序: void EXTI3_IRQHandler(void)
{
delay_ms(10);//消抖
if(KEY1==0) //按键KEY1
{
LED1=1;//GPIO_ResetBits(GPIOA,GPIO_Pin_5);
}
EXTI_ClearITPendingBit(EXTI_Line3); //清除LINE3上的中断标志位
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>