#include #include #include "string.h" #include "def.h" #if EN_SEGGER #include "Os.h" #if (EN_SYSTEMVIEW==1) #include #endif #include #endif static int bInitPrint = 0; static char buffer[256] = {0}; // int MyPrintf(const char* fmt, ...) { TickType tmS = Os_CounterTick[0]; int tmp_size = 0; #if EN_SEGGER if(bInitPrint==0) { bInitPrint = 1; #if (EN_SYSTEMVIEW==0) SEGGER_RTT_Init(); SEGGER_RTT_ConfigUpBuffer(0, NULL, NULL, 0, SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL); //SEGGER_RTT_WriteString(0, "SEGGER Real-Time-Terminal Sample\r\n"); //SEGGER_RTT_WriteString(0, "###### Testing SEGGER_printf() ######\r\n"); #endif } #undef EN_SYSTEMVIEW #define EN_SYSTEMVIEW 0 //if 1 to systemview else to rtt log memset(buffer,0,sizeof(buffer)); //printf timestamp snprintf(buffer,sizeof(buffer),"%08d ",tmS); #if (EN_SYSTEMVIEW==0) SEGGER_RTT_WriteString(0,buffer); #endif //print log va_list args; va_start(args,fmt); tmp_size = vsnprintf(buffer,sizeof(buffer),fmt,args); #if (EN_SYSTEMVIEW==0) SEGGER_RTT_WriteString(0,buffer); #else SEGGER_SYSVIEW_PrintfHost(buffer); #endif //print \r\n int len = strlen(buffer); if((len>0)&&(buffer[len-2]!='\n')&&(buffer[len-2]!='\r')) { #if (EN_SYSTEMVIEW==0) SEGGER_RTT_WriteString(0,"\r\n"); #endif } va_end(args); #endif return tmp_size; }