summaryrefslogtreecommitdiffstats
path: root/boiler-monster/stm32/app/led.c
diff options
context:
space:
mode:
authorfishsoupisgood <github@madingley.org>2020-09-09 11:53:37 +0100
committerfishsoupisgood <github@madingley.org>2020-09-09 11:53:37 +0100
commit9d87c925a9eaa4fc256be3173c14a20d1469472d (patch)
tree50d63f87a47a0eac3f5b8058850184bcd4e6ee95 /boiler-monster/stm32/app/led.c
parentdafd8cf2fdcdd637cc06f760d318cf8391b1a294 (diff)
downloadheating-9d87c925a9eaa4fc256be3173c14a20d1469472d.tar.gz
heating-9d87c925a9eaa4fc256be3173c14a20d1469472d.tar.bz2
heating-9d87c925a9eaa4fc256be3173c14a20d1469472d.zip
everything, mostly, working
Diffstat (limited to 'boiler-monster/stm32/app/led.c')
-rw-r--r--boiler-monster/stm32/app/led.c101
1 files changed, 101 insertions, 0 deletions
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);
+}
+
+