diff options
author | root <root@lab.ourano.james.local> | 2021-02-26 12:12:38 +0000 |
---|---|---|
committer | root <root@lab.ourano.james.local> | 2021-02-26 12:12:38 +0000 |
commit | 3d48137c00511b3f2d35511482d1a76f8d06382d (patch) | |
tree | d75c88220cc847007869b0795a240c5077948262 /boot/usart.c | |
parent | 6d3a824e1cdae6e28146b7de380724b49488f3c2 (diff) | |
download | clock-3d48137c00511b3f2d35511482d1a76f8d06382d.tar.gz clock-3d48137c00511b3f2d35511482d1a76f8d06382d.tar.bz2 clock-3d48137c00511b3f2d35511482d1a76f8d06382d.zip |
works
Diffstat (limited to 'boot/usart.c')
-rw-r--r-- | boot/usart.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/boot/usart.c b/boot/usart.c new file mode 100644 index 0000000..c602710 --- /dev/null +++ b/boot/usart.c @@ -0,0 +1,68 @@ +#include "project.h" + + +#define TX2 GPIO5 +#define TX2_PORT GPIOD + +#define RX2 GPIO6 +#define RX2_PORT GPIOD + + +void +usart2_xmit_chr (char d) +{ + usart_send_blocking (USART2, d); +} + + +void +usart2_xmit_str (const char *s) +{ + while (*s) + usart_send_blocking (USART2, * (s++)); +} + + +void usart2_xmit_nl (void) +{ + usart2_xmit_str ("\r\n"); +} + +void usart2_xmit_xdigit (unsigned d) +{ + if (d < 0xa) usart2_xmit_chr ('0' + d); + else usart2_xmit_chr ('a' + (d - 0xa)); +} + +void usart2_xmit_uint32 (uint32_t v) +{ + unsigned i; + + for (i = 0; i < 8; ++i) { + usart2_xmit_xdigit (v >> 28); + v <<= 4; + } +} + + +void +usart_init (void) +{ + rcc_periph_clock_enable (RCC_GPIOD); + rcc_periph_clock_enable (RCC_USART2); + + + MAP_INPUT (RX2); + MAP_AF (TX2, GPIO_AF7); + MAP_AF_PU (RX2, GPIO_AF7); + + + usart_set_baudrate (USART2, 38400); + usart_set_databits (USART2, 8); + usart_set_stopbits (USART2, USART_STOPBITS_1); + usart_set_parity (USART2, USART_PARITY_NONE); + usart_set_flow_control (USART2, USART_FLOWCONTROL_NONE); + usart_set_mode (USART2, USART_MODE_TX_RX); + + usart_enable (USART2); +} |