Код
void main (void)
{
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW3_MASK | SW4_MASK);
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW4_MASK);
//* set the interrupt by software
AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);
for (;;)
{}
}
// обработчик
void pio_c_irq_handler ( void )
{
int dummy;
count_int_pio++;
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2);
delay_t (2000000);
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2);
delay_t (2000000);
dummy =AT91C_BASE_PIOA->PIO_ISR;
}
{
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW3_MASK | SW4_MASK);
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW4_MASK);
//* set the interrupt by software
AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);
for (;;)
{}
}
// обработчик
void pio_c_irq_handler ( void )
{
int dummy;
count_int_pio++;
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2);
delay_t (2000000);
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2);
delay_t (2000000);
dummy =AT91C_BASE_PIOA->PIO_ISR;
}