summaryrefslogtreecommitdiff
path: root/src/uart.c
blob: 86bc01f9b25d9ab52b400f59bd800663a80b70c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "uart.h"

void uart_init(void) {
  UART_TXCTRL = UART_TXCTRL_TXEN;
  UART_RXCTRL = UART_RXCTRL_RXEN;
}

void uart_putc(char c) {
  while (UART_TXDATA & UART_TXDATA_FULL) {}
  UART_TXDATA = (uint32_t)c;
}

void uart_puts(const char* s) {
  while (*s)
    uart_putc(*s++);
}

char uart_getc(void) {
  uint32_t data;
  do {
    data = UART_RXDATA;
  } while (data & UART_RXDATA_EMPTY);
  return (char)data;
}