よくある質問

常见问答

如何在程序中判断GPIO的中断触发源?  日期:2018-01-16

以NuMicro®家族系列芯片中的M051来举例,P0[7:0]与P1[7:0]共16个脚位共享GP01_INT中断处理函数,因此当中断触发并进入GP01_INT中断处理函数后,需要判断触发来源以进行对应动作。

 

表一 M051中断脚位映射表

Interrupt Name

Interrupt Description

GP01_INT

External signal interrupt from P0[7:0] / P1[7:0]

 

当中断触发后,对应脚位的中断标志位会置位,可依序检查ISRC寄存器中的中断标志位,以判断触发来源,请参考下例:

 

#define GPIO_GET_INT_FLAG(port, u32PinMask) ((port)->ISRC & (u32PinMask))

 

void GPIOP0P1_IRQHandler(void)

{

    if(GPIO_GET_INT_FLAG(P1, BIT3))

    {

        //To check if P1.3 interrupt occurred

        GPIO_CLR_INT_FLAG(P1, BIT3);

        //do something…

    }

    else if(GPIO_GET_INT_FLAG(P1, BIT4))

    {

        //To check if P1.4 interrupt occurred

        GPIO_CLR_INT_FLAG(P1, BIT4);

        //do something…

    }

    else if(GPIO_GET_INT_FLAG(P1, BIT5))

    {

        //To check if P1.5 interrupt occurred

        GPIO_CLR_INT_FLAG(P1, BIT5);

        //do something…

    }

}

产品: 微控制器 ,8 位 8051 微控制器 ,Arm Cortex-M0 微控制器 ,Arm Cortex-M4 微控制器
应用:
功能: Peripherals,ARM,Interrupt,I/O,External Interrupt,GPIO