Смотрим пример в IAR и видим, что там все разжевано по самое немогу :) Моя функция инициализации уарта такая
void UART1_Init( void )
{
// enable the clock of the USART1
AT91C_BASE_PMC->PMC_PCER = (1<PIO_PDR = AT91C_PA21_RXD1 | AT91C_PA22_TXD1;
AT91C_BASE_PIOA->PIO_ASR = AT91C_PA21_RXD1 | AT91C_PA22_TXD1;
AT91C_BASE_US1->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
AT91C_BASE_US1->US_MR = AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE;
// èíèöèàëèçàöèÿ âåêòîðà ïðåðûâàíèé
AT91F_AIC_Init( AT91C_BASE_AIC, AT91C_ID_US1, 7, AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, Usart1_c_irq_handler );
// ðàçðåøàåì ïðåðûâàíèå ïî ïðèåìó áàéòà è âîîáùå ïðåðûâàíèÿ îò US1
AT91C_BASE_US1->US_IER = AT91C_US_RXRDY;
AT91C_BASE_AIC->AIC_EOICR = 0xffffffff; // ýòà ñòðîêà òîëüêî äëÿ êîððåêòíîé ðàáîòû ñ J-link !!!
AT91C_BASE_AIC->AIC_IECR = 1 << AT91C_ID_US1;
AT91C_BASE_US1->US_BRGR = 26; // 115200
}