Test for SWO viewer library.

Dependencies:   SWO mbed

See here for more information.

main.cpp

Committer:
wim
Date:
2016-04-03
Revision:
2:9c50385f83c5
Parent:
1:3308ab077592
Child:
3:3d2422feccb5

File content as of revision 2:9c50385f83c5:

/* mbed Test program for debug and monitoring of ST nucleo boards with SWO.
 * Copyright (c) 2015, v01: WH, Initial version
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
 
#include "mbed.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);

Serial pc(SERIAL_TX, SERIAL_RX);

SWO_Channel SWO;

int main() {
#if defined(TARGET_NUCLEO_F103RB)
  pc.printf("Hello World from ST32F103RB\n\r");    
#endif  
#if defined(TARGET_NUCLEO_F446RE)
  pc.printf("Hello World from ST32F446RE\n\r");    
#endif  
//  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)
//Stream
  SWO.printf("\r\nHello World from SWO\r\n");
  SWO.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock); 
#endif    

  while(1) {
    myled = 1; // LED is ON
    wait(0.2); // 200 ms
    myled = 0; // LED is OFF
    wait(1.0); // 1 sec

    pc.putc('*');    

#if (D_SWO == 1)
    //Stream
    SWO.putc('#');       
#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