Код
void pio_irq_init(void)
{
AT91C_BASE_SYS->PIOA_ODR = XXX;
AT91C_BASE_SYS->PIOA_PPUDR = XXX;
AT91C_BASE_SYS->PIOA_IFER = XXX;
AT91C_BASE_SYS->PIOA_PER = XXX;
AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOA);
AT91C_BASE_SYS->PIOA_IDR = ~0;
AT91C_BASE_SYS->PIOA_IER = XXX;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = 0;
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (u_int)pio_irq_handler;
AT91C_BASE_AIC->AIC_IECR = (1UL << AT91C_ID_PIOA);
}
__irq void pio_irq_handler(void)
{
AT91C_BASE_SYS->PIOA_ISR;
AT91C_BASE_AIC->AIC_EOICR = 0;
}