STM32公共中断端口如何配置

今天我在配置STM32F103的时候要用到PA5---PA7作为中断,要配置他们的中断函数,但是所有配置都是正常的,自己查不出什么问题,具体代码如下:

void KEY_Init(void) //IO初始化
{ 
     GPIO_InitTypeDef GPIO_InitStructure;
 
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA,PORTE时钟

    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//KEY0-KEY1
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
     GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA 5.6.7
}




 void EXITTI_Init(void)
{
 
EXTI_InitTypeDef EXTI_InitStructure;    //定义一个EXTI结构体变量
NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    //使能IO复用功能,使用中断功能重要!!!
    KEY_Init();
 
/* 引脚选择 */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5|GPIO_PinSource6|GPIO_PinSource7);//配置端口C的13引脚为中断源

 
/* 设置外部中断结构体的成员*/
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    //中断模式为中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    //下降沿触发
EXTI_InitStructure.EXTI_Line = EXTI_Line5 | EXTI_Line6|EXTI_Line7;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;    //使能中断线
EXTI_Init(&EXTI_InitStructure);    //根据参数初始化中断寄存器
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置中断优先级分组2
 
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;    //设定中断源为PC13
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;    //中断占优先级为2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;    //副优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    //使能中断
NVIC_Init(&NVIC_InitStructure);    //根据参数初始化中断寄存器
 

}


void EXTI19_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line5) != RESET)
  {
        delay_ms(10);//消抖
    if(KEY0==0)
    {                 
        printf("555");
        LED1=!LED1;    
    }
     /* Clear the Key Button EXTI line pending bit */
    EXTI_ClearITPendingBit(EXTI_Line5);

       
  }
  else if(EXTI_GetITStatus(EXTI_Line6 )!= RESET)
  {
    delay_ms(10);//消抖
        printf("666");
    if(KEY1==0)          
    {                 
        LED0=!LED0;
    /* Clear the Key Button EXTI line pending bit */
    EXTI_ClearITPendingBit(EXTI_Line6);

   

  }
  else if(EXTI_GetITStatus(EXTI_Line7 )!= RESET)
  {
   
        printf("777");
        
    EXTI_ClearITPendingBit(EXTI_Line7);

}
}

GPIO也初始化了,中断也初始化了,中断服务函数也写了,它就是不工作,实在是想不到哪里出问题了,望各位帮解决。

img


多了个1