Häufig gestellte Fragen
- M051-Base-Serie(95)
- M0518-Serie(97)
- M0519-Serie(43)
- M0564-Serie(1)
- Mini51-Base-Serie(90)
- Nano100/102-Base-Serie(101)
- Nano103-Base-Serie(10)
- Nano110/112-LCD-Serie(100)
- Nano120-USB-Serie(111)
- Nano130-Advanced-Serie(110)
- NUC029-Serie(94)
- NUC100/200-Advanced-Serie(102)
- NUC120/122/123/220-USB-Serie(116)
- NUC121/125-Serie(1)
- NUC126-USB-Serie(2)
- NUC130/230-CAN-Serie(103)
- NUC131-NUC1311-CAN-Serie(98)
- NUC140/240-Konnektivität-Serie(114)
常見問答
如何在程式中判斷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 |