| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #include "evalsoc.h"
- #include "evalsoc_uart.h"
- int32_t uart_init(UART_TypeDef* uart, uint32_t baudrate)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->DIV = SystemCoreClock / baudrate - 1;
- uart->TXCTRL |= UART_TXEN;
- uart->RXCTRL |= UART_RXEN;
- return 0;
- }
- int32_t uart_config_stopbit(UART_TypeDef* uart, UART_STOP_BIT stopbit)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uint32_t stopval = stopbit;
- stopval = (stopbit << UART_TXCTRL_NSTOP_OFS) & UART_TXCTRL_TXCNT_MASK;
- uart->TXCTRL &= stopval | (~UART_TXCTRL_TXCNT_MASK);
- return 0;
- }
- int32_t uart_write(UART_TypeDef* uart, uint8_t val)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- while (uart->TXFIFO & UART_TXFIFO_FULL);
- uart->TXFIFO = val;
- return 0;
- }
- uint8_t uart_read(UART_TypeDef* uart)
- {
- uint32_t reg;
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- do {
- reg = uart->RXFIFO;
- } while (reg & UART_RXFIFO_EMPTY);
- return (uint8_t)(reg & 0xFF);
- }
- int32_t uart_set_tx_watermark(UART_TypeDef* uart, uint32_t watermark)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- watermark = (watermark << UART_TXCTRL_TXCNT_OFS) & UART_TXCTRL_TXCNT_MASK;
- uart->TXCTRL &= watermark | (~UART_TXCTRL_TXCNT_MASK);
- return 0;
- }
- int32_t uart_enable_txint(UART_TypeDef* uart)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->IE |= UART_IE_TXIE_MASK;
- return 0;
- }
- int32_t uart_disable_txint(UART_TypeDef* uart)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->IE &= ~UART_IE_TXIE_MASK;
- return 0;
- }
- int32_t uart_set_rx_watermark(UART_TypeDef* uart, uint32_t watermark)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- watermark = (watermark << UART_RXCTRL_RXCNT_OFS) & UART_RXCTRL_RXCNT_MASK;
- uart->RXCTRL &= watermark | (~UART_RXCTRL_RXCNT_MASK);
- return 0;
- }
- int32_t uart_enable_rxint(UART_TypeDef* uart)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->IE |= UART_IE_RXIE_MASK;
- return 0;
- }
- int32_t uart_disable_rxint(UART_TypeDef* uart)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->IE &= ~UART_IE_RXIE_MASK;
- return 0;
- }
- int32_t uart_get_status(UART_TypeDef* uart)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- return (uart->IP);
- }
- int32_t uart_clear_status(UART_TypeDef* uart, uint32_t mask)
- {
- if (__RARELY(uart == NULL)) {
- return -1;
- }
- uart->IP &= ~mask;
- return 0;
- }
|