Test for SWO viewer library.

Dependencies:   SWO mbed

See here for more information.

Revision:
3:3d2422feccb5
Parent:
2:9c50385f83c5
--- a/main.cpp	Sun Apr 03 12:39:24 2016 +0000
+++ b/main.cpp	Thu Aug 24 18:16:36 2017 +0000
@@ -1,5 +1,7 @@
 /* mbed Test program for debug and monitoring of ST nucleo boards with SWO.
  * Copyright (c) 2015, v01: WH, Initial version
+ *               2016, v02: WH, Stream support, Added F446
+ *               2017, v03: WH,PS. Added Stream claim for stdout, proposed by Pavel Sorejs 
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -21,28 +23,42 @@
  */
  
 #include "mbed.h"
+#include "flip.h"
 #include "SWO.h"
 
 //Single Wire Output(SWO) Test
 //Hook up to Host PC software ST-LINK Utility or Segger J-Link SWO viewer
 //
 #define D_SWO    1  //Enable SWO output
-#define D_STREAM 1  //Select Stream or Classic implementation
 
-
-#if(D_STREAM == 1)
 //Stream implementation
 
-DigitalOut myled(LED1);
+DigitalOut myled(LED1); //PA_1
+
+//Note:
+// SWO is on pin PB_3
+// SWDIO is on pin PA_13
+// SWCLK is on pin PA_14
+//
+//I2C i2c(PB_9, PB_8); //I2C, OK
+//DigitalIn in(PB_3);  //SWO, using pin breaks SWO viewer
+//DigitalIn in(PA_10); //RX UART1, OK
+//DigitalIn in(PA_13); //SWDIO, using pin breaks SWO viewer
+//DigitalIn in(PA_14); //SWCLK, using pin breaks SWO viewer
 
 Serial pc(SERIAL_TX, SERIAL_RX);
 
-SWO_Channel SWO;
+SWO_Channel swo("channel");
+
+int i;
 
 int main() {
 #if defined(TARGET_NUCLEO_F103RB)
   pc.printf("Hello World from ST32F103RB\n\r");    
 #endif  
+#if defined(TARGET_NUCLEO_F401RE)
+  pc.printf("Hello World from ST32F401RE\n\r");    
+#endif  
 #if defined(TARGET_NUCLEO_F446RE)
   pc.printf("Hello World from ST32F446RE\n\r");    
 #endif  
@@ -51,10 +67,19 @@
   pc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);  
 
 #if (D_SWO == 1)
-//Stream
-  SWO.printf("\r\nHello World from SWO\r\n");
-  SWO.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock); 
-#endif    
+  swo.printf("\r\nHello World from SWO\r\n");
+  swo.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock); 
+
+  printf("Message on stdout\r\n");
+    
+  if (swo.claim() == true) {
+    pc.printf("SWO has claimed stdout\r\n");
+    printf("Message on stdout redirected to SWO\r\n");
+  }
+  else {
+    pc.printf("SWO failed to claim stdout\r\n");
+  }
+#endif
 
   while(1) {
     myled = 1; // LED is ON
@@ -62,51 +87,13 @@
     myled = 0; // LED is OFF
     wait(1.0); // 1 sec
 
-    pc.putc('*');    
+    pc.putc('*');
 
 #if (D_SWO == 1)
-    //Stream
-    SWO.putc('#');       
+    swo.putc('#');
+    flip(i);
+    i = (i+1) & 0xFF;
 #endif  
   }
 }
 
-#else
-//Classic implementation
-
-DigitalOut myled(LED1);
-
-Serial pc(SERIAL_TX, SERIAL_RX);
-
-SWO_Channel SWO;
-
-int main() {
-  pc.printf("Hello World\n\r"); 
-//  pc.printf("\r\nMy Program - build " MBED_BUILD_TIMESTAMP "\r\n");
-  pc.printf("\r\nMy Program - (partial) build " __DATE__ " " __TIME__ "\r\n");
-  pc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);  
-
-#if (D_SWO == 1)
-//Classic
-  SWO_PrintString("\r\nHello World from SWO\r\n");
-  char message[64];
-  sprintf(message, "CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);
-  SWO_PrintString(message);      
-#endif
-
-  while(1) {
-    myled = 1; // LED is ON
-    wait(0.2); // 200 ms
-    myled = 0; // LED is OFF
-    wait(1.0); // 1 sec
-    
-#if (D_SWO == 1)
-//Classic
-//    SWO_PrintString("#");    
-    SWO_PrintChar('+');    
-#endif     
-    
-  }
-}
-#endif
-