启动外部中断服务函数void EXTI9_5_IRQHandler(void)失败,想问下是怎么回事。我的外部中断服务程序如下所示。
[mw_shl_code=c,true]
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
KEY_Init(); // 按键端口初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
[/mw_shl_code]
[mw_shl_code=c,true]//GPIOA.8 中断线以及中断初始化配置 下降沿触发 PA8 KEY3
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);
EXTI_InitStructure.EXTI_Line=EXTI_Line8;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //外部中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 [/mw_shl_code]
[mw_shl_code=c,true] EXTI_InitStructure.EXTI_LineCmd = ENABLE; //开启外部中断[/mw_shl_code]
[mw_shl_code=c,true] EXTI_Init(&EXTI_InitStructure); [/mw_shl_code]
[mw_shl_code=c,true]//=====================KEY3=====================
//中断线9-5中断参数设置 (PA8)
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //使能按键KEY3所在的外部中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
NVIC_Init(&NVIC_InitStructure);
//=====================END=====================[/mw_shl_code]
[mw_shl_code=c,true]}[/mw_shl_code]
[mw_shl_code=c,true]
[mw_shl_code=c,true]void EXTI9_5_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line8) != RESET)
{ delay_ms(10);//消抖
if(KEY3==1) {
LED4=!LED4;
}
EXTI_ClearITPendingBit(EXTI_Line8); //清除LINE8上的中断标志位
}
}[/mw_shl_code]
[/mw_shl_code]
[mw_shl_code=c,true] [/mw_shl_code]
|