]> mj.ucw.cz Git - home-hw.git/blob - protab/button/button.c
Rainbow case: TODO
[home-hw.git] / protab / button / button.c
1 #include <libopencm3/stm32/rcc.h>
2 #include <libopencm3/stm32/gpio.h>
3
4 int main(void)
5 {
6         rcc_clock_setup_in_hse_8mhz_out_72mhz();
7         rcc_periph_clock_enable(RCC_GPIOA);
8         rcc_periph_clock_enable(RCC_GPIOC);
9
10         // PC13 = BluePill LED
11         gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO13);
12
13         // PA0 ... PA2 = LEDs
14         gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO0);
15         gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO1);
16         gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO2);
17
18         // PA3 = button (pull-up)
19         gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3);
20         gpio_set(GPIOA, GPIO3);
21
22         for (;;) {
23                 if (gpio_get(GPIOA, GPIO3))
24                         gpio_set(GPIOA, GPIO0 | GPIO1 | GPIO2);
25                 else
26                         gpio_clear(GPIOA, GPIO0 | GPIO1 | GPIO2);
27         }
28
29         return 0;
30 }