From: Martin Mares Date: Tue, 30 Jul 2019 20:51:43 +0000 (+0200) Subject: Protab: Button X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=b4ebfd8d69a1e1c533d2f325234e4494ee3cc481;p=home-hw.git Protab: Button --- diff --git a/protab/button/Makefile b/protab/button/Makefile new file mode 100644 index 0000000..7e92deb --- /dev/null +++ b/protab/button/Makefile @@ -0,0 +1,6 @@ +ROOT=../.. +BINARY=button +OBJS=button.o +LIB_OBJS= + +include $(ROOT)/mk/bluepill.mk diff --git a/protab/button/button.c b/protab/button/button.c new file mode 100644 index 0000000..79cc5da --- /dev/null +++ b/protab/button/button.c @@ -0,0 +1,30 @@ +#include +#include + +int main(void) +{ + rcc_clock_setup_in_hse_8mhz_out_72mhz(); + rcc_periph_clock_enable(RCC_GPIOA); + rcc_periph_clock_enable(RCC_GPIOC); + + // PC13 = BluePill LED + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO13); + + // PA0 ... PA2 = LEDs + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO0); + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO1); + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO2); + + // PA3 = button (pull-up) + gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3); + gpio_set(GPIOA, GPIO3); + + for (;;) { + if (gpio_get(GPIOA, GPIO3)) + gpio_set(GPIOA, GPIO0 | GPIO1 | GPIO2); + else + gpio_clear(GPIOA, GPIO0 | GPIO1 | GPIO2); + } + + return 0; +}