Stm32F103 + Stm32CubeMX(一):VSCode 开发环境配置
记得以前大二的时候玩过野火的开发板,当时下载 keil 然后做配置与开发。现在过了四五年重新买了块板子,想试试能不能完全使用 vscode 进行开发。
此篇文章不适合计算机纯小白搭建环境,新手还是看正点原子/野火教程使用 keil 来学习入门吧。
硬件平台:正点原子精英开发板(STM32F103ZET6)、正点原子 STM32下载器
软件平台:Windows 11 专业版 24H2(26100.7462)
选用 Windows 平台是懒得用 WSL 了,以前是 WSL 重度用户,现在有远程 Linux 开发机后,本地的 WSL 几乎没打开过了。
环境准备
软件安装
这里提供的都是官方下载页面,确实会存在一些网络问题或注册下载导致的麻烦,因此我打包了所有的安装包(至 2025-12-17 的最新版本),可以在此下载:https://oss.jklincn.com/stm32_vscode_env.zip
如果链接失效或无法下载,可以给我发邮件获取:jklincn@foxmail.com
VSCode
https://code.visualstudio.com/download
下载安装即可
CMake
找到 cmake-[version]-windows-x86_64.msi 下载安装,并加入到环境变量
Ninja
https://github.com/ninja-build/ninja/releases
找到 ninja-win.zip,下载后解压加入到环境变量
Arm GNU Toolchain
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
找到 arm-gnu-toolchain-[version]-mingw-w64-x86_64-arm-none-eabi.exe,下载安装即可,并加入到环境变量。
ST-Link Driver
https://www.st.com/en/development-tools/stsw-link009.html
下载并解压,点击 dpinst_amd64.exe 安装。
安装后可以将 ST-Link 调试器与电脑连接,查看设备管理器-通用串行总线设备中是否能正确识别 STM32 STLink。
STM32CubeMX
https://www.st.com/en/development-tools/stm32cubemx.html
下载安装即可
xPack OpenOCD
https://github.com/xpack-dev-tools/openocd-xpack/releases/
找到 xpack-openocd-[version]-win32-x64.zip,下载后解压加入到环境变量
环境变量检查
打开 PowerShell / CMD,运行以下命令检查是否都正常安装并加入到环境变量中
|
|
连接硬件
- 将 ST-Link 调试器连接到电脑
- 将开发板连接 ST-Link 调试器
- 开发板接入电源上电
打开 CMD 进行连接测试,如果是其他 MCU 需要相应修改 target,可以在 xpack-openocd-[version]\openocd\scripts\target 中寻找
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg
如果一切正常,应该可以看到
...
Info : STLINK V2J35S7 (API v2) VID:PID 0483:3748
...
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
...
Info : Listening on port 3333 for gdb connections
说明识别到 ST-Link V2 和 Cortex-M3,并且 GDB Server 已启动。
例程说明
就做一个简单的 LED 控制吧。
由《精英V2 硬件参考手册_V1.0》可以看到精英版有 2 个LED:DS0(红灯)和 DS1(绿灯),分别接到了 PB5 和 PE5 上,并且都是低电平亮。
生成工程
从这一节开始发现本人也是嵌入式小白,只是在软件环境配置上更熟练一点😂
以下配置不一定是最合适的,可能存在非常多的优化空间,只是先按照网上教程来,先把 VSCode 开发这个路走通再慢慢学习嵌入式的知识。
打开 STM32CubeMX,New Project 下选择 Start My project from MCU(即点击 ACCESS TO MCU SELECTOR)
输入 STM32F103ZET6 进行查找,双击两下即可进入配置页面。
Pinout & Configuration 中需要修改的配置
- System Core -> RCC -> High Speed Clock (HSE) -> Crystal/Ceramic Resonator
- System Core -> SYS -> Debug -> Serial Wire
- 右侧 Pinout view -> PB5/PE5 -> GPIO_Output
Project Manager 中需要修改的配置
- Project -> Project Settings -> Project Name
- Project -> Project Settings -> Project Location (注意路径不要有空格与中文,避免潜在问题)
- Project -> Project Settings -> Toolchain / IDE -> CMake
设置完之后点击右上角 GENERATE CODE 即可,第一次应该会提示下载,点击 YES 即可
生成完之后打开文件夹,应该会看到这些文件。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/12/17 15:02 cmake
d----- 2025/12/17 15:02 Core
d----- 2025/12/17 15:02 Drivers
-a---- 2025/12/17 15:02 6421 .mxproject
-a---- 2025/12/17 15:02 1584 CMakeLists.txt
-a---- 2025/12/17 15:02 906 CMakePresets.json
-a---- 2025/12/17 15:02 12022 startup_stm32f103xe.s
-a---- 2025/12/17 15:02 8376 STM32F103XX_FLASH.ld
-a---- 2025/12/17 15:02 3287 test1.ioc
如果后续在外设引脚方面有更改,使用 STM32CubeMX 打开该项目重新进行代码生成就可以了,会自动更新而不用重新创建。
VSCode 打开工程
打开 VSCode,可以先安装以下插件
- CMake Tools
- Cortex-Debug
C/C++ 插件在本文中不是必需的,因此暂不安装。
然后在 VSCode 中打开上述生成的工程文件夹,这时界面上方 CMake 应该会弹出配置预设,选择 Debug 即可。
如果没有弹出,则在左边页面中手动选择 CMake,点击配置右侧的按钮;或者输入 Ctrl + Shift + P 打开命令面板,输入 CMake: Configure 也可以进行配置。
修改代码
修改 Core\Src\main.c 代码,这里在 main() 函数中会看到大量 USER CODE BEGIN 和 USER CODE END 的注释,AI 解释说是 CubeMX 在重新 Generate Code 时,只保证 USER CODE 区域里的代码不被覆盖。因此我们也将代码加入到这些区域内。
初始化逻辑添加到 MX_GPIO_Init() 之后
|
|
LED 闪烁逻辑写到 while (1) 循环中
|
|
编译与调试
点击左下角【齿轮图标生成】就可以编译了,或者命令面板输入 CMake: Build。
为了更方便调试与烧录,下面会把编译、烧录与调试集成为一步。
在项目文件夹下创建 .vscode 文件夹,在其中创建 tasks.json 文件,写入以下内容,这主要是定义了一个 build 任务,调用 cmake 进行编译:
|
|
再创建 launch.json 文件,写入以下内容:
|
|
这边需要相应修改:
- executable:将 test1 换成你的项目名称
- configFiles:如果你的开发板是其他 MCU 型号
之后,就可以按下 F5 一键编译、烧录、开启调试啦。
由于 launch.json 中写了 “runToEntryPoint”: “main”,因此在进入 main 中会自动地加入一个断点。
我们可以从这个断点出发进行逐行运行,也可以直接 F5 进入到循环中。
至此,使用 VSCode 进行 Stm32 的内容就结束了。
后续计划
下一篇文章会先介绍一下 STM32CubeMX 生成的项目文件分别是什么,等待学习中…
参考文章
本站不记录浏览量,但如果您觉得本内容有帮助,请点个小红心,让我知道您的喜欢。