STM32在Keil集成开发环境中使用SWO进行调试信息打印
在单片机的开发过程中,打印信息是调试过程中非常重要的手段。通常打印信息是通过单片机的串口外设进行的。最近学到了一种通过SWD/JTAG调试接口来打印调试信息的方法,可以在串口资源紧张的时候减少一个调试串口资源占用。
本文基于Keil
+ STLink
和原子的STM32学习板进行演示
首先我们基于原子开发板的串口教程实现printf
串口格式输出打印的方法,然后对fputc
这个函数实现做一些简单修改,代码工作就结束了。
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch); //SWO输出字符的方法
while((USART1->SR&0X40)==0);
USART1->DR = (u8) ch;
return ch;
}
部分情况下需要在工程选项中选择Use MicroLib这个选项
确保代码正确编译,能够在串口获得打印信息后,再对调试器进行设置
转到调试器的Trace
选项卡,依次设置核心时钟、追踪使能,并使能SWO时钟自动检测
再ITM端口中需要选择端口0,因为从STM32
的标准库实现中可以看到ITM_SendChar
使用的是端口0
进入调试模式,然后在视图菜单中打开调试输出查看器即可
View => Trace => Debug (printf) Viewer
参考文献
感谢扫码支持