Как-то так:
CODE
void GPIOINT(void)
{
VICADDRESS = 0;
if (IOINTSTATUS_bit.P0INT)
{
if (IO0INTSTATF_bit.P0_9)
{
//Falling edge
}
if (IO0INTSTATR_bit.P0_9)
{
//Rising edge
}
IO0INTCLR_bit.P0_9 = 1;
}
else
{
EXTINT = 0x08;
}
}
void initgpioint(void)
{
IO0INTENF_bit.P0_9 = 1; //Falling edge
IO0INTENR_bit.P0_9 = 1; //Rising edge
IO0INTCLR_bit.P0_9 = 1; //clears any interrupts
VICINTENCLEAR_bit.EINT3 = 1;
EXTINT = 0x08; //clears the corresponding bits
EXTMODE = 0;
VIC_SetVectoredIRQ(GPIOINT, 5, VIC_EINT3);
VICINTENABLE |= 1UL << VIC_EINT3;
}