よくある質問
- M051 ベースシリーズ(95)
- M0518シリーズ(97)
- M0519シリーズ(43)
- M0564 シリーズ(1)
- ミニ 51 ベースシリーズ(90)
- ナノ 100/102 ベースシリーズ(101)
- Nano103 ベースシリーズ(10)
- ナノ 110/112 LCD シリーズ(100)
- ナノ 120 USB シリーズ(111)
- ナノ 130 アドバンストシリーズ(110)
- NUC029 シリーズ(94)
- NUC100/200 アドバンストシリーズ(102)
- NUC120/122/123/220 USB シリーズ(116)
- NUC121/125シリーズ(1)
- NUC126 USB シリーズ(2)
- NUC130/230 CAN シリーズ(103)
- NUC131/NUC1311 CAN シリーズ(98)
- NUC140/240 コネクティビティシリーズ(114)
よくある質問
How to determine a GPIO interrupt trigger source? 日付:2018-01-16
For the M051 series in the NuMicro® family, for example, the GP01_INT interrupt handler is shared by 16 pins of P0 [7: 0] and P1 [7: 0]. After an interrupt is triggered and the GP01_INT interrupt handler is entered, it is needed to determine a trigger source for the corresponding action.
Table 1 M051 Interrupt Mapping Table
|
Interrupt Name |
Interrupt Description |
|
GP01_INT |
External signal interrupt from P0[7:0] / P1[7:0] |
When an interrupt is triggered, the interrupt flag of the corresponding pin will be set, and the interrupt flag in the ISRC register can be sequentially checked to determine the trigger source. Refer to the following example.
#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 MCU ,Arm Cortex-M0 MCU ,Arm Cortex-M4 MCU |
|---|---|
| アプリケーション: | |
| 機能: | Peripherals,ARM,Interrupt,I/O,External Interrupt,GPIO |