cafq 发表于 2012-6-19 15:49:35

STM32 外部中断源无法定位

下面是我写的测试代码
void EXTI_Config(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;

        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource10 );
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource11 );
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource12 );
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource13 );
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource14 );
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource15 );
        EXTI_InitStructure.EXTI_Line = EXTI_Line10 | EXTI_Line11| EXTI_Line12 | EXTI_Line13| EXTI_Line14 | EXTI_Line15;        


        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

//        EXTI_InitTypeDef EXTI_InitStructure;
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2 );
        EXTI_InitStructure.EXTI_Line = EXTI_Line2;        
           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
}



void EXTI2_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line2)!=RESET)
        {
       EXTI_ClearITPendingBit(EXTI_Line2);
       EXTI_ClearFlag(EXTI_Line2);
       ZD1_Flag=1;
        }
}

代码老进去中断2 ,我看了下好像是串口2发射引起的,可是我已经设置串口源是GPIO_E2了啊(GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2 )),不明白怎么回事 请高手指教

tiancaigao7 发表于 2012-6-19 16:42:53

没看懂你的问题,你定义了EXIT2,结果程序每次都进入了对应的中断,这个逻辑上有什么问题呢?让你这么纠结?

cafq 发表于 2012-6-21 15:23:18

进入中断的原因不是 GPIOE_Pin2产生的,而是GPIOA_Pin2 产生的,A2 为串口的发送,每发送一个数据 就进一次中断。所以迷惑
页: [1]
查看完整版本: STM32 外部中断源无法定位