Я пользуюсь вот таким вот кодом:
Код
void uart0Init(void)
{
// enable the clock of UART0
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_US0);
// enable uart pins on PIO
*AT91C_PIOA_PDR = AT91C_PA5_RXD0 | AT91C_PA6_TXD0;
// disable I/O pullup
*AT91C_PIOA_PPUDR = AT91C_PA5_RXD0;
// reset the UART
pUSART->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS |AT91C_US_TXDIS;
// set serial line mode
pUSART->US_MR = AT91C_US_USMODE_NORMAL |// Normal Mode
AT91C_US_CLKS_CLOCK | // Clock = MCK
AT91C_US_CHRL_8_BITS |
AT91C_US_PAR_NONE |
AT91C_US_NBSTOP_1_BIT;
// set the baud rate
pUSART->US_BRGR = AT91F_US_Baudrate(MCK,BR);
// enable the uart
pUSART->US_CR = AT91C_US_RXEN | AT91C_US_TXEN | AT91C_US_DTREN;
}
Код работает. Получил я его опытным путем перебирая разные чужие примеры. Вопрос у меня в следующем. Читаю доку по UART в AT91 и часть кода:
Код
// reset the UART
pUSART->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS |AT91C_US_TXDIS;
// set serial line mode
pUSART->US_MR = AT91C_US_USMODE_NORMAL |// Normal Mode
AT91C_US_CLKS_CLOCK | // Clock = MCK
AT91C_US_CHRL_8_BITS |
AT91C_US_PAR_NONE |
AT91C_US_NBSTOP_1_BIT;
// set the baud rate
pUSART->US_BRGR = AT91F_US_Baudrate(MCK,BR);
// enable the uart
pUSART->US_CR = AT91C_US_RXEN | AT91C_US_TXEN | AT91C_US_DTREN;
мне полностью понятна. Но откуда я должен был догадаться о том что вначале надо делать:
Код
// enable the clock of UART0
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_US0);
// enable uart pins on PIO
*AT91C_PIOA_PDR = AT91C_PA5_RXD0 | AT91C_PA6_TXD0;
// disable I/O pullup
*AT91C_PIOA_PPUDR = AT91C_PA5_RXD0;
Где-то может есть какие-то application notes про UART или еще чего-то?
p.s. только начинаю работать с AT91 вопросов больше чем когда-либо
Сообщение отредактировал Hexxx - Mar 20 2007, 13:06