vscode+cmake的STM32单片机调试开发环境

本文介绍了如何利用Visual Studio Code(VSCode)结合cmake搭建STM32单片机的开发环境,包括Windows系统下的cmake和make环境配置,VSCode的调试环境设置,以及cmake脚本的编写,使得开发者可以在VSCode中进行编辑、编译和调试STM32程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

说实话我不是非常喜欢使用Keil MDK进行嵌入式开发。但是,对于STM32等单片机来说MDK的优秀的在线调试功能总是让人喜欢。最让我不喜欢的是MDK的编辑器以及配色。这让我不停的尝试使用Visual Studio Code进行编辑代码然后使用MDK进行编译和调试,就这样我在两个IDE之间来回切换。于是,我进一步厌烦了这种开发方式。于是我决定用cmake来管理和编译工程,在Visual Studio Code来编辑代码。这样我甚至可以在工程中嵌入Python脚本来提高工作效率。

2.环境配置

2.1 Windows系统下cmake和make环境安装

  • cmake和make(MinGW Makefiles)的安装

    下载安装包安装即可,这里不再赘述。唯一需要注意的点就是make的安装路径尽量不要安装在带有空格的路径名下,这会影响到后续的使用。

2.2配置Visual Studio Code调试环境

Visual Studio Code是一个优秀的集成开发环境,一直以来都希望可以用它取代keil MDK来开发单片机的程序。在Cmake有关的章节中我解决了工程配置以及用armcc编译的相关问题。这一部分将解决在线仿真调试的问题。

  • GDB Serv

### 配置 VSCode 进行 STM32 烧录 为了在 VSCode 中成功配置并执行 STM32 的烧录操作,需确保开发环境中已集成必要的工具链和支持文件。具体而言,在 CMakeLists.txt 文件中定义目标设备及其编程接口是至关重要的[^1]。 #### 安装必备软件包 首先确认已经安装了用于 ARM Cortex-M 微控制器的 GNU 工具链 (GNU Arm Embedded Toolchain),以及 OpenOCD 或者 ST-Link Utility 来支持硬件调试器连接至目标板卡完成程序下载过程[^2]。 #### 修改 `launch.json` 和 `tasks.json` 对于 Visual Studio Code 用户来说,编辑 `.vscode/launch.json` 可以为特定项目定制启动配置;而通过调整同目录下的 `tasks.json` 则可以指定构建任务参数。当涉及到实际写入固件时,则应在此处加入相应的命令来调用 openocd 或 st-flash 实现自动化流程控制[^3]。 ```json // .vscode/tasks.json snippet for flashing with st-link { "label": "flash", "type": "shell", "command": "${workspaceFolder}/stlink/st-flash write ${fileDirname}/${fileBasenameNoExtension}.hex 0x8000000" } ``` 上述 JSON 片段展示了如何利用 St-Link V2 接口将编译后的二进制映像部署到闪存地址空间起始位置(通常是 0x8000000)。当然也可以根据实际情况选用其他 JTAG/SWD 调试适配器,并相应更改指令语法结构以匹配所选方案特性。 #### 使用 CMake 构建系统管理项目依赖关系 借助于现代 C++ 构建工具——CMake,能够更加高效地管理和维护复杂的嵌入式应用程序源码树形结构。创建顶层 CMakeLists.txt 文件描述整个项目的逻辑布局,包括但不限于: - 设定交叉编译器路径; - 添加 CMSIS、HAL 库等外部资源链接; - 明确指出最终可执行文件名称及入口函数所在源文件; - 注册自定义 make rules 处理 hex/bin 文件转换工作以便后续上传步骤顺利开展。 ```cmake # Example of adding flash target to CMake project add_custom_target(flash ALL DEPENDS ${PROJECT_NAME}) add_dependencies(flush elf_to_hex) install(CODE " execute_process(COMMAND st-flash --reset write \"\${CMAKE_BINARY_DIR}/${PROJECT_NAME}.hex\" 0x8000000)" ) ``` 这段脚本片段说明了怎样向现有的 CMakeScript 增添额外的目标节点 (`flush`) 并关联其前置条件 (`elf_to_hex`) ,最后一步则是安排一次重定向动作触发在线刷新机制重启单片机运行新刷入的应用程序实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南波儿万

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值