[开发工具] VSCode开发STM32环境配置完整教程

[复制链接]
 楼主| hbzjt2011 发表于 2025-7-17 20:14 | 显示全部楼层 |阅读模式
本帖最后由 hbzjt2011 于 2025-7-17 20:16 编辑

#技术资源#  #申请原创#  @21小跑堂
前言
传统的STM32开发通常使用Keil MDK或STM32CubeIDE,但VSCode作为一个轻量级且功能强大的编辑器,配合适当的工具链,可以打造出高效的STM32开发环境。本教程将详细介绍如何从零开始配置VSCode的STM32开发环境。
准备工作系统要求
  • Windows 10/11 (本教程以Windows为例)
  • 网络连接良好(需要下载多个工具)
  • 至少4GB可用磁盘空间
第一步:安装基础工具1.1 安装VSCode 67938687885a8791b1.png
1.2 安装Git
  • 访问Git官网:https://git-scm.com/
  • 下载Windows版Git
  • 安装时注意选择"Use Git from Windows Command Prompt"
626886878863d4f074.png
20853687886663b58b.png
第二步:安装ARM工具链
2.1 下载ARM GCC工具链 8976687886d9c25b0.png
314666878876e7ee98.png
2.2 安装ARM GCC
  • 运行下载的安装程序
  • 重要: 安装完成时勾选"Add path to environment variable"
  • 验证安装:打开命令行输入 arm-none-eabi-gcc --version
722568788d00e32ce.png
655068788d24a4e4f.png
第三步:安装调试工具
3.1 安装OpenOCD
  • 访问OpenOCD官网:https://openocd.org/
  • 下载Windows版本
  • 解压到 D:\OpenOCD 目录
  • 将 D:\OpenOCD\bin 添加到系统PATH环境变量
7770168788d6f1a136.png
9391168788e47df152.png
3.2 安装MinGW-w64
  • 访问MinGW-w64官网或使用MSYS2
  • 安装完成后确保 make 命令可用
  • 验证:命令行输入 make --version

2592468788e7daec70.png
4.1 下载STM32CubeMX 4081068789063491e0.png
4.2 配置STM32CubeMX
  • 启动STM32CubeMX
  • 在Help菜单中选择"Manage embedded software packages"
  • 下载所需的MCU包(如STM32F1系列)

第五步:配置VSCode扩展5.1 安装必需扩展
在VSCode中安装以下扩展:
  • C/C++ (Microsoft)
  • C/C++ Extension Pack (Microsoft)
  • Cortex-Debug (marus25)
  • ARM Assembly (dan-c-underwood)
  • STM32Cube for Visual Studio Code
  • GitLens (可选,用于Git增强)
5.2 配置C/C++扩展
  • 按 Ctrl+Shift+P 打开命令面板
  • 输入 "C/C++: Edit Configurations"
  • 创建配置文件
第六步:创建STM32项目
6.1 使用STM32CubeMX创建项目
  • 打开STM32CubeMX
  • 选择"File" → "New Project"
  • 选择目标MCU(如STM32F103ZET6)
  • 配置引脚和时钟
  • 在"Project Manager"中:
    • 设置项目名称和路径
    • Toolchain/IDE选择"Makefile"
    • 勾选"Generate Under Root"


6.2 生成代码
  • 点击"GENERATE CODE"
  • 等待代码生成完成
  • 生成的项目包含Makefile和源代码

第七步:在VSCode中打开项目7.1 打开项目文件夹
  • 打开VSCode
  • 选择"File" → "Open Folder"
  • 选择刚才生成的项目文件夹

7.2 配置VSCode工作空间
在项目根目录创建 .vscode 文件夹,并添加以下配置文件,注意编译器路径的设置:
c_cpp_properties.json
  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "STM32",
  5.             "includePath": [
  6.                 "${workspaceFolder}/**",
  7.                 "${workspaceFolder}/Core/Inc",
  8.                 "${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc",
  9.                 "${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy",
  10.                 "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include",
  11.                 "${workspaceFolder}/Drivers/CMSIS/Include"
  12.             ],
  13.             "defines": [
  14.                 "USE_HAL_DRIVER",
  15.                 "STM32F103xx"
  16.             ],
  17.             "compilerPath": "D:/Arm GNU Toolchain arm-none-eabi/14.3 rel1/bin/arm-none-eabi-gcc.exe",
  18.             "cStandard": "c17",
  19.             "cppStandard": "c++17",
  20.             "intelliSenseMode": "gcc-arm"
  21.         }
  22.     ],
  23.     "version": 4
  24. }


tasks.json
  1. {
  2.     "version": "2.0.0",
  3.     "tasks": [
  4.         {
  5.             "type": "shell",
  6.             "label": "Build STM32",
  7.             "command": "make",
  8.             "args": [
  9.                 "all"
  10.             ],
  11.             "group": {
  12.                 "kind": "build",
  13.                 "isDefault": true
  14.             },
  15.             "problemMatcher": [
  16.                 "$gcc"
  17.             ],
  18.             "detail": "编译STM32项目"
  19.         },
  20.         {
  21.             "type": "shell",
  22.             "label": "Clean STM32",
  23.             "command": "make",
  24.             "args": [
  25.                 "clean"
  26.             ],
  27.             "group": "build",
  28.             "detail": "清理编译文件"
  29.         }
  30.     ]
  31. }


launch.json
  1. {
  2.     "version": "0.2.0",
  3.     "configurations": [
  4.         {
  5.             "name": "Debug STM32",
  6.             "cwd": "${workspaceFolder}",
  7.             "executable": "${workspaceFolder}/build/your_project_name.elf",
  8.             "request": "launch",
  9.             "type": "cortex-debug",
  10.             "servertype": "openocd",
  11.             "configFiles": [
  12.                 "interface/stlink-v2.cfg",
  13.                 "target/stm32f1x.cfg"
  14.             ],
  15.             "svdFile": "${workspaceFolder}/STM32F103.svd",
  16.             "showDevDebugOutput": "none"
  17.         }
  18.     ]
  19. }


第八步:编译和调试
8.1 编译项目
  • 按 Ctrl+Shift+P 打开命令面板
  • 输入 "Tasks: Run Task"
  • 选择 "Build STM32"
  • 或者直接按 Ctrl+Shift+B
499756878a90d35935.png
8.2 连接调试器
  • 连接ST-Link调试器到电脑和开发板
  • 按 F5 或点击调试按钮
  • 首次调试需要选择配置文件
812196878e853c69f4.png

第九步:实用技巧
  • 断点设置:在代码行号左侧单击设置断点
  • 变量监视:在调试面板添加变量到监视窗口
  • 寄存器查看:使用Cortex-Debug扩展查看ARM寄存器
  • 内存查看:在调试控制台使用 -exec x/32x 0x20000000 查看内存
512526878e8c486cdf.png
故障排除常见问题及解决方案
  • 编译错误:找不到arm-none-eabi-gcc
    • 检查PATH环境变量是否正确设置
    • 重新安装ARM工具链并确保勾选添加到PATH
  • 调试连接失败
    • 检查ST-Link驱动是否正确安装
    • 确认OpenOCD配置文件路径正确
    • 检查开发板连接和供电
  • IntelliSense不工作
    • 检查 c_cpp_properties.json 配置
    • 确认包含路径正确
    • 重启VSCode
  • 无法下载程序
    • 检查目标芯片是否匹配
    • 确认调试器连接正常
    • 检查芯片是否被保护

总结
通过以上步骤,您已经成功搭建了完整的VSCode STM32开发环境。这个环境具有以下优势:
  • 轻量级:相比传统IDE更加轻便
  • 可定制:丰富的扩展和配置选项
  • 免费:无需购买昂贵的IDE许可证
  • 跨平台:支持Windows、Linux、macOS
  • 现代化:优秀的代码补全和调试体验
建议在实际开发中:
  • 定期备份项目配置文件
  • 使用版本控制管理代码
  • 学习更多VSCode快捷键提高效率
  • 关注扩展更新,及时升级工具链

本教程基于STM32F1系列芯片,其他系列芯片的配置方法类似,只需调整相应的芯片型号和配置参数即可。




214346878e8b959ce3.png
烟雨蒙蒙520 发表于 2025-7-25 12:03 | 显示全部楼层
若使用 “STM32 for VSCode” 插件,部分文件可自动生成
643757107 发表于 2025-7-25 12:24 | 显示全部楼层
越来越多的人使用VSC开发了。
是你的乱码 发表于 2025-7-28 14:31 | 显示全部楼层
编译错误 "arm-none-eabi-gcc not found":检查 GCC 工具链是否正确添加到环境变量,重启 VSCode 后重试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎参与LabVIEW版块的讨论学习! 点我一键即达

256

主题

2827

帖子

44

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:欢迎参与LabVIEW版块的讨论学习! 点我一键即达

256

主题

2827

帖子

44

粉丝
快速回复 在线客服 返回列表 返回顶部