diff options
Diffstat (limited to 'src/arch/stm32f746zg-nucleo/driver/stdout.cc')
-rw-r--r-- | src/arch/stm32f746zg-nucleo/driver/stdout.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/arch/stm32f746zg-nucleo/driver/stdout.cc b/src/arch/stm32f746zg-nucleo/driver/stdout.cc new file mode 100644 index 0000000..9a5bdfb --- /dev/null +++ b/src/arch/stm32f746zg-nucleo/driver/stdout.cc @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Birte Kristina Friesel + * + * SPDX-License-Identifier: BSD-2-Clause + */ +#include "driver/stdout.h" + +#include <libopencm3/stm32/rcc.h> +#include <libopencm3/stm32/gpio.h> +#include <libopencm3/stm32/usart.h> + +void StandardOutput::setup() +{ + rcc_periph_clock_enable(RCC_USART3); + gpio_mode_setup(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO8); + gpio_set_af(GPIOD, GPIO_AF7, GPIO8); + + usart_set_baudrate(USART3, 115200); + usart_set_databits(USART3, 8); + usart_set_stopbits(USART3, USART_STOPBITS_1); + usart_set_mode(USART3, USART_MODE_TX); + usart_set_parity(USART3, USART_PARITY_NONE); + usart_set_flow_control(USART3, USART_FLOWCONTROL_NONE); + + usart_enable(USART3); +} + +void StandardOutput::put(char c) +{ + usart_send_blocking(USART3, c); + if (c == '\n') { + put('\r'); + } +} + +StandardOutput kout; |