]> mj.ucw.cz Git - home-hw.git/blobdiff - lib/util-debug.c
BSB: An attempt at sending
[home-hw.git] / lib / util-debug.c
index e47ff46c9bd04c6f119216381e0a903ebcce9a1d..72a566eae40f49226514c9edf53cb5b7fba8dc93 100644 (file)
@@ -1,5 +1,12 @@
+/*
+ *     Debugging Utilities for STM32
+ *
+ *     (c) 2018--2019 Martin Mareš <mj@ucw.cz>
+ */
+
 #include "util.h"
 
+#include <libopencm3/stm32/gpio.h>
 #include <libopencm3/stm32/usart.h>
 
 #include <stdarg.h>
 // Use this USART for debugging messages
 // #define DEBUG_USART USART1
 
+// Use this LED for debugging
+#ifdef DEBUG_LED_BLUEPILL
+#define DEBUG_LED_GPIO GPIOC
+#define DEBUG_LED_PIN GPIO13
+#define DEBUG_LED_INVERSE
+#endif
+
 /*** Implementation ***/
 
 #ifdef DEBUG_SEMIHOSTING
@@ -61,8 +75,8 @@ void debug_putc(int c)
 #endif
 #ifdef DEBUG_USART
        if (c == '\n')
-               usart_send_blocking(USART2, '\r');
-       usart_send_blocking(USART2, c);
+               usart_send_blocking(DEBUG_USART, '\r');
+       usart_send_blocking(DEBUG_USART, c);
 #endif
 }
 
@@ -153,6 +167,9 @@ void debug_printf(const char *fmt, ...)
 
                c = *fmt++;
                switch (c) {
+                       case 'c':
+                               debug_putc(va_arg(args, int));
+                               break;
                        case 'd':
                                printf_number(va_arg(args, int), width, flags | PF_SIGNED, 10);
                                break;
@@ -176,3 +193,23 @@ void debug_printf(const char *fmt, ...)
 
        va_end(args);
 }
+
+void debug_led(bool light)
+{
+#ifdef DEBUG_LED_GPIO
+#ifdef DEBUG_LED_INVERSE
+       light = !light;
+#endif
+       if (light)
+               gpio_set(DEBUG_LED_GPIO, DEBUG_LED_PIN);
+       else
+               gpio_clear(DEBUG_LED_GPIO, DEBUG_LED_PIN);
+#endif
+}
+
+void debug_led_toggle(void)
+{
+#ifdef DEBUG_LED_GPIO
+       gpio_toggle(DEBUG_LED_GPIO, DEBUG_LED_PIN);
+#endif
+}