Цитата(LoLo @ Apr 14 2011, 10:10)

Добавил в тот же проект инициализацию USART и теперь при запуске Debuggera в Keil вообще все зацикливается сразу!
Где зацикливается-то? Вы поймите правильно, Keil'а под рукой у меня нет, а проект представляет собой безумное нагромождение оберток, разобраться в котором глазами почти невозможно.
Чтобы просто начать работать с UART'ом нужно сочинить всего-то навсего пару десятков строчек:
CODE
#define MCK 48000000
#define UART0_BAUDRATE 115200
#define RXD0 (1UL << 5)
#define TXD0 (1UL << 6)
void uart0_ini(void)
{
AT91C_BASE_SYS->PIOA_PDR = RXD0 | TXD0;
AT91C_BASE_PMC->PMC_PCER = 1UL << AT91C_ID_US0;
*AT91C_US0_MR = AT91C_US_USMODE_NORMAL | AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE;
*AT91C_US0_BRGR = (unsigned int)((mck + (UART0_BAUDRATE * 8)) / (UART0_BAUDRATE * 16));
*AT91C_US0_CR = AT91C_US_TXEN | AT91C_US_RXEN;
}
void uart0_send_byte(unsigned int byte)
{
while(!(*AT91C_US0_CSR & AT91C_US_TXRDY));
*AT91C_US0_THR = byte;
}
Зато появится понимание, что и как происходит. А все эти атмеловские приблуды - не более чем мусор, затуманивающий код.