From 28a93739db99920431b5d72d948bfc1cddd0a8a7 Mon Sep 17 00:00:00 2001 From: xengineering Date: Sat, 24 Oct 2020 18:14:58 +0200 Subject: Add USART Code --- usart/main.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 usart/main.c (limited to 'usart/main.c') diff --git a/usart/main.c b/usart/main.c new file mode 100644 index 0000000..b92cbbe --- /dev/null +++ b/usart/main.c @@ -0,0 +1,70 @@ + + +#include +#include +#include + + +#define DELAY 1000000 + + +void clock_init(void); +void gpio_init(void); +void usart_init(void); +void delay(void); + + +int main(void) +{ + clock_init(); + gpio_init(); + usart_init(); + + while(1){ + delay(); + usart_send_blocking(USART3, 'H'); + usart_send_blocking(USART3, 'e'); + usart_send_blocking(USART3, 'l'); + usart_send_blocking(USART3, 'l'); + usart_send_blocking(USART3, 'o'); + usart_send_blocking(USART3, '\r'); + usart_send_blocking(USART3, '\n'); + delay(); + } + + return 0; +} + + +void clock_init(void) +{ + rcc_periph_clock_enable(RCC_GPIOB); // for USART3 + rcc_periph_clock_enable(RCC_USART3); // for USART3 +} + + +void gpio_init(void) +{ + gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART3_TX); // TX setup + gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO_USART3_RX); // RX setup +} + + +void usart_init(void) +{ + usart_set_baudrate(USART3, 9600); + usart_set_databits(USART3, 8); + usart_set_flow_control(USART3, USART_FLOWCONTROL_NONE); + usart_set_mode(USART3, USART_MODE_TX_RX); + usart_set_parity(USART3, USART_PARITY_NONE); + usart_set_stopbits(USART3, USART_STOPBITS_1); + usart_enable(USART3); +} + + +void delay(void) +{ + for (int i = 0; i < DELAY; i++) { + __asm__("nop"); + } +} -- cgit v1.2.3-70-g09d2