diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2018-01-06 19:47:40 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2018-01-06 19:47:40 -0500 |
commit | a93e506b78b7379e14c23ae80a5281485897faee (patch) | |
tree | bdf12811a80d31056bcc0b607062e6ce7cd7919d /src/serial.c | |
parent | 67243b6d986179da11fc1d364606d8e1653688ff (diff) |
serial support
Diffstat (limited to 'src/serial.c')
-rw-r--r-- | src/serial.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/serial.c b/src/serial.c new file mode 100644 index 0000000..692faf0 --- /dev/null +++ b/src/serial.c @@ -0,0 +1,27 @@ +#include <stm32l476xx.h> +#include <gpio.h> + +void serial_init(void) +{ + gpio_mode(GPIOA, 2, ALTERNATE); + gpio_mode(GPIOA, 3, ALTERNATE); + GPIOA->AFR[0] &= ~(0x0000FF00); + GPIOA->AFR[0] |= 0x00007700; + RCC->APB1ENR1 |= RCC_APB1ENR1_USART2EN; + + // start usart device + USART2->BRR = 80000000L / 115200L; + USART2->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; +} + +void serial_put(int c) +{ + while (!(USART2->ISR & USART_ISR_TXE)); + USART2->TDR = c & 0xFF; +} + +char serial_get(void) +{ + while (!(USART2->ISR & USART_ISR_RXNE)); + return USART2->RDR & 0xFF; +} |