можно вот так:
Код
// обработчик прерывания. вызывается через 1 сек
void TC0_ISREntry( void )
{
unsigned long STATUS = AT91C_BASE_TC0->TC_SR;
//тут изменяешь состояние светодиода
AT91C_BASE_AIC->AIC_IVR = 0;
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);
/* End the interrupt in the AIC. */
AT91C_BASE_AIC->AIC_EOICR = 0;
}
// ---------------- INITIALIZE TCO ----------------
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_TC0);
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF;
AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV5_CLOCK | AT91C_TC_CPCTRG;
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
AT91C_BASE_TC0->TC_RC = 46285; // MCK / 1024 = 47,4МГц / 1024 => 1 сек
AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;
// ---------------- INITIALIZE AIC FOR TCO ----------------
AT91C_BASE_AIC->AIC_IDCR = (1 << AT91C_ID_TC0);
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) TC0_ISREntry;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 0x3;
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);
AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_TC0);