PRINTF Debuging mit Nucleo Board
ITM Instrumentation Trace Macro Cell
SWV Serial Wire Viewer
Die modernen Cortexm Prozessoren erlauben das Debuggen aber einen PIN (serial wire). Die Serielle Schnittstelle bleibt frei, Timings im Programmablauf werden nicht beeinflusst.
1. User Code
int __io_putchar(int ch) {
ITM_SendChar(ch);
return ch;
}
//int _write(int file, char *ptr, int len)
//{
// //return usart_write(platform_get_console(), (u8 *)ptr, len);
// int i=0;
// for(i=0 ; i<len ; i++)
// ITM_SendChar((*ptr++));
// return len;
//}
2. #include <stdio.h>
printf("aha, so geht das\n);
ACHTUNG! Die Ausgabe erfolgt nur, wenn ein \n enthalten ist oder wenn mit fflush(stdout) der Inhalt des Ausgabepuffers geleert wird.
Alternativ kann man ein Macro vereinbaren:
/* Private macro -------------------------------------------------------------*/
#define debug(fmt, ...) printf(fmt, ##__VA_ARGS__); fflush(stdout);
debug("text %d %f", 12, 1.2); //Verwendung wie printf
Wenn Float-Zahlen ausgegeben werden sollen, muss der Compiler umgestellt werden:

3. //Run/Debug Configuration
Bei Punkt 4) muss die Systemtaktrate eingetragen werden (Default 84.0MHz)

4. Debugger starten
5. //Window/Show View/Other/SWV ITM Data Console
6. Data Console konfigurieren

7. Aufzeichnung starten

Data Trace Graph
Adresse oder Variablenname verwenden und Datentyp beachten!







