刚从keil转vscode开发,遇到好多问题。插件用的是STM32CubeIDE for Visual Studio Code;通过这个来开发stm32。我开发的时候遇到了一些问题:
1.不知道从哪里配置文件;就比如说我想把一个oled.h和oled.c,加入工程中,然后直接用上,但是发现配置上之后报了好多错,Cmakelists里面明明也已经配置好了,把路径写进去了,但是还是用不好,不知道是不是我文件存放的位置不对,这个配置文件的文件夹应该放在哪里呀
2.里面好多那些专业的东西比如说ninja还有cmake还有gcc这些是什么东西呀,我第一次弄这个vscode他们就经常报错,我也搞不懂他们是什么
3.还有就是编译和下载到单片机,我看别人的vscode,敲好代码之后直接顶上就有一个build什么的按钮直接编译然后下载,为什么我没有呀,我要去调试那里才可以编译下载
基础的环境配置的应该是没问题的,我跟着keysking的教程学的,我前面也成功将用他编程做过小成品,但是在需要使用驱动文件进行配置的时候,我就不知道我要怎么去操作了,好多东西都看不懂,
Vscode开发STM32
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
檀越@新空间 2026-02-14 12:28关注中午好🌞🌞🌞
本答案参考通义千问你从 Keil 转到 VSCode 开发 STM32,确实会遇到不少陌生的概念和配置问题。下面我会详细解答你的三个主要问题,并给出解决方案、配置说明、代码示例和注意事项,帮助你顺利过渡。
一、如何正确添加
.h和.c文件到工程中?✅ 问题原因:
你可能没有将文件放置在正确的目录结构中,或者 CMakeLists 配置不完整,导致编译器找不到这些文件。
📌 解决方法(有序列表):
-
确认文件的存放位置:
- 在 VSCode 的项目根目录下,通常有一个
src/目录用于存放源文件(.c),一个include/或inc/目录用于存放头文件(.h)。 - 建议路径结构如下:
your_project/ ├── CMakeLists.txt ├── src/ │ └── main.c │ └── oled.c ├── include/ │ └── oled.h └── build/
- 在 VSCode 的项目根目录下,通常有一个
-
修改 CMakeLists.txt 添加文件:
- 打开
CMakeLists.txt,确保你已经包含了src/和include/目录。 - 示例:
# 设置源文件目录 set(SRC_DIR ${CMAKE_SOURCE_DIR}/src) set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include) # 添加源文件 file(GLOB SOURCES "${SRC_DIR}/*.c") # 添加头文件目录 include_directories(${INCLUDE_DIR}) # 创建可执行文件 add_executable(your_program ${SOURCES})
- 打开
-
检查文件是否被正确引用:
- 在
main.c中使用#include "oled.h",确保路径正确。 - 如果你在
include/下,应该写成#include "oled.h",而不是#include "include/oled.h"。
- 在
-
重新生成构建系统:
- 在 VSCode 中打开终端(Terminal),运行以下命令:
cmake --build build --target all - 确保没有报错,否则需要检查 CMakeLists 是否配置错误。
- 在 VSCode 中打开终端(Terminal),运行以下命令:
二、什么是 Ninja、CMake、GCC?为什么经常报错?
🔍 概念解释:
| 名称 | 作用 | |------|------| | CMake | 是一个跨平台的构建工具,用来管理项目的编译过程。它会根据
CMakeLists.txt生成 Makefile 或其他构建脚本。 | | Ninja | 是一个轻量级的构建工具,CMake 可以调用它来加速编译过程。VSCode 的 STM32 插件默认使用 Ninja 作为构建工具。 | | GCC | GNU Compiler Collection,是编译 C/C++ 代码的编译器,包括arm-none-eabi-gcc(针对嵌入式开发)。 |
❗️ 常见报错原因:
- CMake 没有找到正确路径或编译器。
- 环境变量未设置,无法找到
arm-none-eabi-gcc。 - CMakeLists 缺少必要的依赖配置。
✅ 解决方案:
-
安装必要的工具链:
- 安装 ARM GCC 工具链。
- 确保
arm-none-eabi-gcc在系统环境变量中可用。
-
配置 CMake 使用正确的编译器:
- 在
CMakeLists.txt中指定编译器:set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
- 在
-
确保 CMake 生成了正确的构建文件:
- 在 VSCode 中,点击右下角的 “CMake: Configure” 来生成
build/目录中的文件。
- 在 VSCode 中,点击右下角的 “CMake: Configure” 来生成
-
查看编译输出:
- 在 VSCode 中打开“终端”,运行:
cmake --build build --target all - 如果出现错误,请根据提示进行调整。
- 在 VSCode 中打开“终端”,运行:
三、如何像别人一样直接点击 Build 和 Download?
⚙️ 问题原因:
你可能没有正确配置 VSCode 的任务(Task)或调试(Debug)配置,导致没有快捷按钮。
✅ 解决方法:
-
配置 VSCode 的任务(Task):
- 打开
.vscode/tasks.json,如果没有则新建。 - 示例内容:
{ "label": "Build", "type": "shell", "command": "cmake --build build --target all", "group": "build" }
- 打开
-
配置调试(Debug):
- 打开
.vscode/launch.json,如果没有则新建。 - 示例内容(假设使用 OpenOCD):
{ "name": "STM32 Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/your_program.elf", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Build", "miDebuggerPath": "/usr/bin/gdb-multiarch" }
- 打开
-
添加快捷按钮:
- 在 VSCode 的顶部菜单栏中,点击 “Run and Debug”(虫子图标)。
- 选择 “Start Debugging” 或 “Build” 来运行任务。
- 也可以通过快捷键
Ctrl+Shift+B触发 Build 任务。
四、总结
| 问题 | 解决方案 | |------|----------| | 如何添加
.h和.c文件? | 放在src/和include/目录,修改CMakeLists.txt| | 什么是 CMake、Ninja、GCC? | CMake 是构建工具,Ninja 是构建引擎,GCC 是编译器 | | 为什么没有 Build 和 Download 按钮? | 配置.vscode/tasks.json和launch.json即可 |
五、附:CMakeLists.txt 示例(完整版)
cmake_minimum_required(VERSION 3.10) project(STM32_Project) set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER arm-none-eabi-g++) set(SRC_DIR ${CMAKE_SOURCE_DIR}/src) set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include) file(GLOB SOURCES "${SRC_DIR}/*.c") include_directories(${INCLUDE_DIR}) add_executable(stm32_app ${SOURCES})
如果你能按照以上步骤操作,应该可以顺利地在 VSCode 中开发 STM32 项目。如果还有具体错误信息,欢迎继续提问,我可以帮你逐条分析!
解决 无用评论 打赏 举报-