STM32CubeIDE使用笔记(03):使用ST-LINK调试程序

文章目录

  • 目的
  • ST-LINK设备
    • 说明
    • 引脚连接
    • 更新ST-LINK固件
  • SWD
  • SWV
    • 向控制台输出信息
    • 变量追踪
    • 函数耗时占比统计
    • 异常与中断追踪
    • SWV追踪日志
  • 总结

目的

ST-LINK是ST意法半导体为评估、开发STM8系列和STM32系列MCU而设计的集在线仿真与下载为一体的开发工具。STM32CubeIDE支持使用ST-LINK进行 SWDSWV 仿真。本文就对相关功能与使用做个说明。

ST-LINK设备

说明

ST-LINK设备可以买ST官方的 ST-LINK V2 或者 ST-LINK V3
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第1张图片
也可以买TB上那种十几块的U盘大小的仿的 ST-LINK V2 产品:
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第2张图片
两者使用是各有优缺点的:

  • ST官方的接口齐全,可以支持SW和SWV方式调试(还有JTAG,没前面两个好用),但是官方的ST-LINK不支持向STM32开发板供电,也就是你还得单独给开发板供电;
  • TB上那种便宜的对STM32来说几乎都是只支持SW方式调试的,不支持SWV方式(SWV方式开发者可以向IDE输出调试信息,调试起来更加方便),但是这类模块几乎都可以直接为STM32开发板供电;

引脚连接

本文使用ST-LINK调试主要用到下面几个引脚:

  • SWCLK :通常连接STM32-PA14引脚,也被标记为JTCK;
  • SWDIO :通常连接STM32-PA13引脚,也被标记为JTMS;
  • SWO :通常连接STM32-PB3引脚,也被标记为JTDO;
  • GND :共地;
  • T_VCC :官方ST-LINK特有,需要将MCU的电源连接至该引脚,例如MCU 3.3V供电,则需要将该3.3V电源连接至 T_VCC

SWD调试时需要连接: SWCLKSWDIOGNDT_VCC(如果有)
SWV调试时需要连接: SWCLKSWDIOSWOGNDT_VCC(如果有)

如果MCU相应IO口被占用将无法启动调试(STM32CubeMX配置时记得开启SYS->Debug):
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第3张图片

更新ST-LINK固件

可以在STM32CubeIDE菜单栏 Help > ST-LINK更新 中更新ST-LINK固件。

SWD

根据上面进行接线,点击Debug就可以进入调试了,初次调试需要进行设置:

Debug相关界面功能说明如下:
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第4张图片
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第5张图片
STM32CubeIDE使用笔记(03):使用ST-LINK调试程序_第6张图片

SWV

如果在 Debug Configurations > 调试器 中使能SWV就可以开启SWV调试了,默认情况下启动调试后并不会开启SWV功能具体的窗口,需要在 Window > Show View 中开启相应窗口。在各个SWV窗口中均可以启动/暂停/配置SWV:

功能上来说SWV其实就是SWD的扩展,最基本的操作和SWD是一样的,这里主要稍微介绍下扩展的那部分:

向控制台输出信息

在上位机软件调试的时候经常会向控制台输出信息以供调试,现在STM32调试也可以了。
通过向 ITM->PORT[port]寄存器写入数据就可以向SWV Console输出信息,根据此编写下面函数:

// 向SWV Console输出信息
// port:0~31
void swvPrint(int port, char *ptr, int len)
{
    int i = 0;
    for (i = 0; i < len; i++)
    {
        while (ITM->PORT[port].u32 == 0)
        {
        }
        ITM->PORT[port].u8 = *(ptr + i);
    }
}

然后就可以在代码中使用该函数向控制台输出信息了:

变量追踪

SWV可以追踪变量并将变量变化绘制成图形:

函数耗时占比统计

异常与中断追踪

SWV追踪日志

总结

使用ST-LINK调试程序相关说明主要就是以上这些了,更多内容可以参考 Atollic TrueSTUDIO官方相关内容:
White paper: 《System analysis and real-time tracing
with Serial Wire Viewer (SWV)》
Blog:《How to use the most powerful debug techniques on ARM Cortex-M devices [SWV]》

你可能感兴趣的:(STM32相关)