summaryrefslogtreecommitdiffstats
path: root/boiler-monster/stm32/app/led.c
diff options
context:
space:
mode:
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);
+}
+
+