Debugging tool for mbed enabled microcontrollers, especially for NUCLEO-F303RE and STM32F042F6P6.

Revision:
18:472b66aeb1f5
Parent:
17:5b0dd2a6b130
Child:
19:b355ad429450
--- a/Debug.h	Mon Jun 03 19:51:15 2019 +0000
+++ b/Debug.h	Sat Mar 20 12:53:37 2021 +0000
@@ -14,6 +14,16 @@
 #define max(a, b) (((a) > (b)) ? (a) : (b)) 
 
 
+typedef enum
+{
+   GND = 0,
+   BUTTON_GND = 0,
+   VDD = 1,
+   BUTTON_VDD  = 1,
+   VCC = 1,
+   BUTTON_VCC  = 1,
+} button_mode;
+
 //------------------------------------------------------------------------------------------------------------------
 /** Debug_serial class.
  *  Class for stepping programme and printing actual position of the running programme with optional print of one variable (int, float, char or char*).
@@ -163,29 +173,38 @@
  * Example program:
  * @code
  * // ----------------------------------------------------------------------------
+ * // Example program of Debug_led class for STM32F042F6P6
  * // Author: Lukas Bielesch 
  * // Department of Measurement, Czech technical university in Prague, Czech Republic 
- * // Date of publication: 13. May 2019
+ * // Date of publication: 20. March 2021
  * // ----------------------------------------------------------------------------
+ * #include "mbed.h"
  * #include "Debug.h"
- * AnalogIn analog(PA_0);
- * PwmOut pwm(PA_4);
- * DigitalOut out(PA_1);
- * Debug_led deb(PA_5, PA_6, "BUTTON_VDD"); //debug led on PA5, debug button connected to VDD on PA6
+ * 
+ * PwmOut pwm(PA_4); 
+ * DigitalOut led(PA_1);
+ * Debug_led deb(PA_5, PA_7, GND); //debug led on PA_5, debug button connected to ground on PA_7
+ * 
  * int main(){
  * 
  *     out = 1;
- *     deb.breakpoint(1);
+ *     deb.breakpoint(); // breakpoint with periodical flashing with 300 ms period until the button is pressed
  *     pwm = 0.5;
  *     pwm.period(1);
- *     deb.breakpoint(2);    
+ *     deb.breakpoint(2, 200); // breakpoint with periodical double-flashing with 200 ms period   
  * 
  *     while(1){
- *         deb.breakpoint();
+ *         deb.breakpoint(3); // breakpoint with periodical triple-flashing until the button is pressed
  *         pwm = pwm + 0.1f;
+ *         
+ *         //init pwm on the pin without pwm functionality causes MbedOS Error
+ *         // error message is sent to uart on PA_2 and PA_3
+ *         PwmOut pwm2(PA_0); 
+ *         
  *         wait(2);
  *     }
  * }
+ *
  * @endcode
  */
 // class Debug_led
@@ -195,31 +214,32 @@
     /** Create object of class Debug_led
      * @param led_pin pin of of debug led
      * @param button_pin pin of of debug button
-     * @param mode mode of button connection("BUTTON_GND", "BUTTON_VCC", "BUTTON_VDD")
+     * @param mode (optional): mode of button connection(GND, VCC), default value value is GND
      */
-    Debug_led(PinName led_pin, PinName button_pin, char mode[11] = "BUTTON_GND");
+    Debug_led(PinName led_pin, PinName button_pin, button_mode mode = GND);
     
     /** Perform one breakpoint
-     * @param number(optional) number of flashes of periodic flashing of LED during the breakpoint, default is constant flashing
+     * @param number(optional): number of flashes of LED during the breakpoint, default value is 1
+     * @param period_ms(optional): period of flashing of the LED in ms, default value is 300ms
      */
-    void breakpoint(int number = -1);
+    void breakpoint(int number = 1, int period_ms = 300);
 
 private:  
 // objects
     DigitalOut led; //debug led
     InterruptIn button; //debug button
 // variables
-    int button_mode; //mode of button 1->pullupt, 0->pulldown 
+    int b_mode; // mode of button connection(GND = 0, VCC = 1)
     volatile bool end_breakpoint; //true when button was pushed
-    int number_of_breakpoints; //number of the current breakpoint
+//    int number_of_breakpoints; //number of the current breakpoint
     
     /** Initialization */
-    void init(char mode[11]);
+    void init(button_mode mode);
     
     /** Blink the debug led n-times with blink period  wait_time_ms */
     void flash_n_times(int wait_time_ms, int n);
     
-    /** IRQ function, end breakpoint after the button is pushed */
+    /** IRQ handler function, end breakpoint after the button is pushed */
     void end_break();
 };