]> mj.ucw.cz Git - home-hw.git/blob - protab/usart1/usart.c
Protab: USART
[home-hw.git] / protab / usart1 / usart.c
1 #include <libopencm3/stm32/rcc.h>
2 #include <libopencm3/stm32/gpio.h>
3 #include <libopencm3/stm32/usart.h>
4
5 int main(void)
6 {
7         rcc_clock_setup_in_hse_8mhz_out_72mhz();
8         rcc_periph_clock_enable(RCC_GPIOA);
9         rcc_periph_clock_enable(RCC_GPIOC);
10         rcc_periph_clock_enable(RCC_USART1);
11
12         // PC13 = BluePill LED
13         gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO13);
14
15         // PA10 = RX1, PA9 = TX1
16         gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO10);
17         gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO9);
18
19         usart_set_baudrate(USART1, 115200);
20         usart_set_databits(USART1, 8);
21         usart_set_stopbits(USART1, USART_STOPBITS_1);
22         usart_set_mode(USART1, USART_MODE_TX_RX);
23         usart_set_parity(USART1, USART_PARITY_NONE);
24         usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE);
25         usart_enable(USART1);
26
27         int c = 32;
28         for (;;) {
29                 gpio_toggle(GPIOC, GPIO13);
30
31                 usart_send(USART1, c);
32                 usart_wait_send_ready(USART1);
33
34                 c++;
35                 if (c == 127)
36                         c = 32;
37         }
38 }