我之前分享读取MPU6050数据的时候,使用了STLink自带的虚拟串口,来输出调试信息,从而使得上位机能够及时查看到调试输出信息。
其实,STLink的SWD模式下,还可以使用SWV调试模式,这样子不需要额外的串口,就能输出调式信息,也非常的方便。
但SWV模式默认没有开启,需要经过一番设置,才能够使用,下面是具体的步骤。
一、使用STM32CubeMX配置工程
在STM32CubeIDE中,点击.ioc文件,即可打开配置界面。或者直接使用STM32CubeMX打开.ioc文件进行配置。
将配置中的DEBUG,设置为Trace Asynchronous Sw即可,其他不用修改。
之前我使用串口调试的时候,设置的Swrial Wire,并设置对应的串口GPIO。
二、查看当前配置的运行频率:
记住该参数,后续在调试的时候,需要用到。
三、在STM32CubeIDE配置开启浮点输出:
如果不开启,则printf中不能输出float浮点数
四、修改调试配置,使能SWV功能:
这里的时钟频率,需要和之前STM32CubeMX中配置的一致。
五、开启调试模式,然后设置SWV输出端口,并进行配置:
点击小绿虫子,进入调试模式,待到进入main.c中的第一个断点时,通过菜单打开SWV ITM Data Console:
再点击+号,添加一个端口,使用默认的0即可
在点击配置图标,使能Port 0输出:
最后点击红色⭕️,即可开始接收调试信息:
不过,这个时侯,还没有调试信息输出。
因为还需要在在代码中做一下处理,使得printf的信息,能够输出到SWV中来。
六、修改代码,使得printf输出到SWV:
添加stdio.h调用:
在main.c中,添加下面的代码:
这将使得printf的信息,通过ITM发送,最终将被接收,并在SWV ITM Data Console中显示。
七、使用printf输出,并调试查看:
在main.c中合适的位置,添加printf输出:
然后重新进入调试模式,并让程序正常运行,调试输出信息就来了。
现在,就可以在代码中,愉快的通过printf输出调试信息,方便调试了。
|