| #include "board.h" |
| #include "spi.h" |
| #include "pio.h" |
| #include "pmc.h" |
| #include "usart.h" |
| |
| #define BUFFER_SIZE 20 |
| |
| /** Pins to configure for the application.*/ |
| const Pin pins[] = { BOARD_PIN_USART_RXD, |
| BOARD_PIN_USART_TXD |
| // PIN_USART1_SCK, |
| // BOARD_PIN_USART_RTS, |
| // BOARD_PIN_USART_CTS, |
| // PINS_SPI, |
| // PIN_SPI_NPCS0_PA11 |
| }; |
| |
| char Buffer[BUFFER_SIZE] = "Hello World"; |
| /** |
| * \brief Configures USART in synchronous mode,8N1 |
| * * \param mode 1 for master, 0 for slave |
| * */ |
| static void _ConfigureUsart(uint32_t freq ) |
| { |
| uint32_t mode; |
| /* MASTER; mode = US_MR_USART_MODE_NORMAL |
| | US_MR_USCLKS_MCK |
| | US_MR_CHMODE_NORMAL |
| | US_MR_CLKO |
| | US_MR_SYNC // FIXME: sync or not sync? |
| | US_MR_MSBF |
| | US_MR_CHRL_8_BIT |
| | US_MR_NBSTOP_1_BIT |
| | US_MR_PAR_NO ; |
| */ |
| |
| |
| // Slave mode: |
| mode = US_MR_USART_MODE_NORMAL |
| // | US_MR_USCLKS_SCK // we don't have serial clock, do we? |
| | US_MR_CHMODE_NORMAL |
| // | US_MR_SYNC |
| | US_MR_MSBF |
| | US_MR_CHRL_8_BIT |
| | US_MR_NBSTOP_1_BIT |
| | US_MR_PAR_NO; |
| |
| /* Enable the peripheral clock in the PMC */ |
| PMC_EnablePeripheral( BOARD_ID_USART ) ; |
| |
| /* Configure the USART in the desired mode @USART_SPI_CLK bauds*/ |
| USART_Configure( BOARD_USART_BASE, mode, freq, BOARD_MCK ) ; |
| |
| /* enable USART1 interrupt */ |
| // NVIC_EnableIRQ( USART1_IRQn ) ; |
| |
| /* Enable receiver & transmitter */ |
| USART_SetTransmitterEnabled( BOARD_USART_BASE, 1 ) ; |
| USART_SetReceiverEnabled( BOARD_USART_BASE, 1 ) ; |
| } |
| |
| int main() { |
| /* Configure pins */ |
| PIO_Configure( pins, PIO_LISTSIZE( pins ) ) ; |
| |
| _ConfigureUsart( 1000000UL); |
| |
| USART_WriteBuffer(BOARD_USART_BASE, Buffer, BUFFER_SIZE); |
| |
| // FIXME: do we need to call USARTEnable? |
| |
| |
| // FIXME: do we need to call USARTDisable? |
| |
| return 0; |
| } |