【嵌入式软件AI编程】09. 使用VS Code调试STM32程序

欢迎关注 youcans@xidian【嵌入式软件AI编程】专栏

【嵌入式软件AI编程】03. STM32 VS Code 开发环境与工具链

【嵌入式软件AI编程】04. AI 编程 的STM32开发流程

【嵌入式软件AI编程】08. 第一个STM32工程

【嵌入式软件AI编程】09. 使用VS Code调试STM32程序

本专栏结合STM32项目实践,介绍嵌入式软件AI编程的实战路径。本专栏内容来自图书《嵌入式系统AI编程》,即将出版。


1.3.3 使用VS Code调试STM32程序

上一小节完成了LED闪烁程序的编写、编译和烧录。本小节介绍如何通过断点、单步执行和变量查看,观察程序执行过程并定位可能出现的问题。

启动调试

确认开发板已经通过ST-LINK接口连接到计算机,并且工程已经成功编译。在VS Code左侧活动栏中单击"运行和调试"图标打开调试界面,然后单击"运行和调试"按钮启动调试。

进入调试状态后,编辑器上方会出现调试工具栏,左侧调试面板中会显示变量、监视、调用堆栈和断点等调试信息。

设置断点

断点可以理解为程序中的"暂停标记"。程序运行到断点所在行时会暂时停止,开发者可以借此观察程序当前执行到哪里,以及相关变量和外设状态。

打开Core/Src/main.c文件,找到LED翻转语句所在的位置。在HAL_GPIO_TogglePin()所在行左侧的空白区域单击,出现红色圆点即表示断点设置成功,如图1-11所示。再次单击红色圆点即可取消断点。

设置断点后,按下F5继续运行程序。程序执行到断点所在行时会自动暂停,编辑器中该行代码会高亮显示,表示程序已经停在当前位置。

图1-11 在VS Code中设置断点

单步执行与继续运行

程序暂停后,可以使用调试工具栏或快捷键控制程序执行。在VS Code中调试STM32程序的常用快捷键如表1-1所示。

表1-1 在VS Code中调试STM32程序的常用快捷键

操作 快捷键 作用
继续运行 F5 程序继续执行,直到遇到下一个断点
单步跳过 F10 执行当前语句,然后停在下一条语句
单步进入 F11 进入当前函数内部继续调试
停止调试 Shift+F5 结束当前调试会话

对于本节示例,当程序停在LED翻转语句HAL_GPIO_TogglePin()这一行时,VS Code会用黄色背景或箭头标出当前语句。需要注意的是,该语句此时尚未执行。

  • 按下F10,程序会执行当前行的语句,切换LD2的输出状态,然后停在下一行"HAL_Delay(500);"处。再次按下F10,会继续执行延时语句。
  • 按下F5后,程序恢复连续运行。由于前面设置了断点,程序下一次执行到LED翻转语句时,会再次暂停在断点位置。

如果希望程序连续运行而不再暂停,可以单击红色圆点取消断点,再按下F5,程序将连续运行,开发板上的LD2指示灯恢复周期性闪烁。按下Shift+F5,结束当前调试。

查看变量

当前的LED闪烁程序中没有需要观察的变量。为了演示查看变量功能,可以增加一个计数变量,记录主循环的执行次数。

在main()函数开头的用户代码区域声明变量:

c 复制代码
/* USER CODE BEGIN 1 */
uint32_t count = 0;
/* USER CODE END 1 */

然后在"while(1)"主循环中增加count++语句:

c 复制代码
while(1)
{
  /* USER CODE BEGIN 3 */
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  count++;
  HAL_Delay(500);
}
/* USER CODE END 3 */

修改完成后,保存文件并重新编译工程。编译成功后,再次启动调试,并在"count++;"这一行设置断点,程序运行到该断点会暂停。如图1-12所示,可以在左侧"变量(Variables)"区域查看当前作用域中的局部变量,也可以在"监视(Watch)"区域手动添加观察变量。

图1-12 在VS Code中查看变量

添加观察变量的方法如下:将鼠标移动到Watch区域,单击右侧的"+"按钮,在输入框中输入count,然后按回车确认。添加成功后,Watch区域会显示count的当前值。

每次按下F5,程序继续运行到下一次断点处时,Watch区域中count的值都会更新。通过这种方式,可以观察主循环执行次数的变化,理解程序运行过程与变量变化之间的关系。

需要说明的是,普通Watch通常在程序暂停时显示变量值,适合配合断点和单步调试使用。实时变量观察需要进一步使用Live Watch功能,将在后续介绍。

停止调试并确认结果

完成调试后,可以单击顶部调试工具栏中的"停止"按钮,或使用快捷键Shift+F5结束调试。停止调试后,顶部调试工具栏消失,VS Code返回普通编辑状态。

如果希望开发板继续独立运行程序,可以按下开发板上的RESET按钮重启。由于程序已烧录到开发板中,LD2指示灯会继续按设定间隔闪烁。

至此,读者已经完成了在VS Code中调试STM32程序的基本操作,包括启动调试、设置断点、单步执行、查看变量和停止调试。这些功能已经能够满足多数基础实验的调试需要。后续遇到程序运行异常时,可以先在关键代码处设置断点,再通过单步执行和变量查看逐步定位问题。

本章小结

STM32 VS Code开发环境凭借其开放、透明和高度可扩展的特性,为AI协作参与STM32开发奠定了坚实的工具基础。

本章介绍了AI编程时代嵌入式软件开发范式的变化,完成了STM32 VS Code开发环境的搭建,并通过第一个STM32工程验证了工程创建、代码编写、编译烧录和在线调试的基本流程。下一章将正式引入AI编程协作工具Claude Code,开启AI协同开发STM32程序的全新路径。

版权声明:

欢迎关注 youcans@xidian【嵌入式软件AI编程】专栏

转发必须注明原文链接:

【嵌入式软件AI编程】09. 使用VS Code调试STM32程序

Copyright by ai4mcu@qq.com

Crated:2026-09

相关推荐
开发笔记-阿牛1 小时前
做工业报警器语音提示,CK6159A 为什么更合适?
人工智能·stm32·单片机·嵌入式硬件·音频
恶魔泡泡糖2 小时前
stm32F103C8T6标准库串口接收轮询方式1
stm32·单片机·嵌入式硬件
国科安芯2 小时前
寄存器级 Flash 擦除与六轮迭代踩坑实录
嵌入式硬件·mcu·架构·flash·抗辐射·eflash
Groundwork Explorer3 小时前
ESP32-C3 SuperMini 排查WIFI收发故障
python·单片机·嵌入式硬件·mcu
糖糖单片机设计3 小时前
基于STM32的远程宠物自动投喂系统
人工智能·stm32·51单片机·语音识别·智能硬件
码哥字节4 小时前
给Claude Code装上40个Skill后,我才发现之前都白用了
claude code·ai编程工具
乱世刀疤5 小时前
Claude Code实用开发案例:远程控制软件IP中继版
人工智能·claude code
对角5 小时前
摸鱼神器:一边写代码,一边刷剧,从此没有一点摸鱼时间会被浪费!
ai编程·deepseek·vibecoding