From 9d87c925a9eaa4fc256be3173c14a20d1469472d Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Wed, 9 Sep 2020 11:53:37 +0100 Subject: everything, mostly, working --- boiler-monster/stm32/app/led.c | 101 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 boiler-monster/stm32/app/led.c (limited to 'boiler-monster/stm32/app/led.c') diff --git a/boiler-monster/stm32/app/led.c b/boiler-monster/stm32/app/led.c new file mode 100644 index 0000000..bdfd084 --- /dev/null +++ b/boiler-monster/stm32/app/led.c @@ -0,0 +1,101 @@ +#include "project.h" + +#define LED_BOARD GPIO13 +#define LED_BOARD_PORT GPIOC + +#define LED_YELLOW GPIO11 +#define LED_YELLOW_PORT GPIOA + +#define LED_GREEN1 GPIO12 +#define LED_GREEN1_PORT GPIOA + +#define LED_GREEN2 GPIO15 +#define LED_GREEN2_PORT GPIOA + +#define LED_RED GPIO3 +#define LED_RED_PORT GPIOB + +static unsigned led, yellow; + + +void led_red_set (int i) +{ + if (i) + CLEAR (LED_RED); + else + SET (LED_RED); +} + +void led_green1_set (int i) +{ + if (i) + CLEAR (LED_GREEN1); + else + SET (LED_GREEN1); +} + +void led_green2_set (int i) +{ + if (i) + CLEAR (LED_GREEN2); + else + SET (LED_GREEN2); +} + +static void _led_yellow_set (int i) +{ + if (i) + CLEAR (LED_YELLOW); + else + SET (LED_YELLOW); +} + +static void led_board_set (int i) +{ + if (i) + CLEAR (LED_BOARD); + else + SET (LED_BOARD); +} + +void led_blink (void) +{ + led = MS_TO_TICKS (25); +} + + +void led_yellow_set (int i) +{ + yellow = !!i; +} + + +void +led_tick (void) +{ + if (led) { + led--; + + led_board_set (1); + _led_yellow_set (!yellow); + } else { + + led_board_set (0); + _led_yellow_set (yellow); + } +} + + +void +led_init (void) +{ + MAP_OUTPUT_PP (LED_BOARD); + MAP_OUTPUT_PP (LED_RED); + MAP_OUTPUT_PP (LED_GREEN1); + MAP_OUTPUT_PP (LED_GREEN2); + MAP_OUTPUT_PP (LED_YELLOW); + + CLEAR (LED_BOARD); +} + + -- cgit v1.2.3