如果芯片的UART不够用,而又需要在程序运行过程中输出一些LOG信息,以便调试、解决问题,那么我们就可以使用调试接口的SWO(SWV)管脚来输出LOG。
首先,需要把下列文件添加到工程文件夹中:
- SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\hardware\kit\common\bsp中的bsp_trace.c和bsp_trace.h,添加到工程文件夹里的hardware\kit\common\bsp中;
- SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v7\hardware\kit\common\drivers中的retargetswo.c和retargetswo.h,添加到工程文件夹里的hardware\kit\common\drivers中,并删掉retargetserial.c和retargetserial.h。
然后,修改main.c中的下列代码:
//#include "retargetserial.h"
#include "retargetswo.h"
// RETARGET_SerialInit();
RETARGET_SwoInit();
printf("Hello SWO!\n");
while(1) ;
在Debugger中运行时,可以在Console窗口看到printf的输出信息,如下图。
如果不用调试方式运行,那么可以用Simplicity Commander的SWO Terminal窗口来显示printf的信息。需要先连接JLink和Target,然后点右下角的Start按钮。
注意:如果程序会运行到低功耗休眠模式,那么SWO Terminal会打印出一大堆乱码。