L.Tyche 2026-02-14 12:27 采纳率: 25%
浏览 3

Vscode开发STM32

刚从keil转vscode开发,遇到好多问题。插件用的是STM32CubeIDE for Visual Studio Code;通过这个来开发stm32。我开发的时候遇到了一些问题:
1.不知道从哪里配置文件;就比如说我想把一个oled.h和oled.c,加入工程中,然后直接用上,但是发现配置上之后报了好多错,Cmakelists里面明明也已经配置好了,把路径写进去了,但是还是用不好,不知道是不是我文件存放的位置不对,这个配置文件的文件夹应该放在哪里呀
2.里面好多那些专业的东西比如说ninja还有cmake还有gcc这些是什么东西呀,我第一次弄这个vscode他们就经常报错,我也搞不懂他们是什么
3.还有就是编译和下载到单片机,我看别人的vscode,敲好代码之后直接顶上就有一个build什么的按钮直接编译然后下载,为什么我没有呀,我要去调试那里才可以编译下载
基础的环境配置的应该是没问题的,我跟着keysking的教程学的,我前面也成功将用他编程做过小成品,但是在需要使用驱动文件进行配置的时候,我就不知道我要怎么去操作了,好多东西都看不懂,

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-02-14 12:28
    关注

    中午好🌞🌞🌞
    本答案参考通义千问

    你从 Keil 转到 VSCode 开发 STM32,确实会遇到不少陌生的概念和配置问题。下面我会详细解答你的三个主要问题,并给出解决方案、配置说明、代码示例和注意事项,帮助你顺利过渡。


    一、如何正确添加 .h.c 文件到工程中?

    问题原因:

    你可能没有将文件放置在正确的目录结构中,或者 CMakeLists 配置不完整,导致编译器找不到这些文件。


    📌 解决方法(有序列表):

    1. 确认文件的存放位置:

      • 在 VSCode 的项目根目录下,通常有一个 src/ 目录用于存放源文件(.c),一个 include/inc/ 目录用于存放头文件(.h)。
      • 建议路径结构如下:
        your_project/
          ├── CMakeLists.txt
          ├── src/
          │   └── main.c
          │   └── oled.c
          ├── include/
          │   └── oled.h
          └── build/
        
    2. 修改 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})
        
    3. 检查文件是否被正确引用:

      • main.c 中使用 #include "oled.h",确保路径正确。
      • 如果你在 include/ 下,应该写成 #include "oled.h",而不是 #include "include/oled.h"
    4. 重新生成构建系统:

      • 在 VSCode 中打开终端(Terminal),运行以下命令:
        cmake --build build --target all
        
      • 确保没有报错,否则需要检查 CMakeLists 是否配置错误。

    二、什么是 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 缺少必要的依赖配置。

    解决方案:

    1. 安装必要的工具链:

      • 安装 ARM GCC 工具链
      • 确保 arm-none-eabi-gcc 在系统环境变量中可用。
    2. 配置 CMake 使用正确的编译器:

      • CMakeLists.txt 中指定编译器:
        set(CMAKE_C_COMPILER arm-none-eabi-gcc)
        set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
        
    3. 确保 CMake 生成了正确的构建文件:

      • 在 VSCode 中,点击右下角的 “CMake: Configure” 来生成 build/ 目录中的文件。
    4. 查看编译输出:

      • 在 VSCode 中打开“终端”,运行:
        cmake --build build --target all
        
      • 如果出现错误,请根据提示进行调整。

    三、如何像别人一样直接点击 Build 和 Download?

    ⚙️ 问题原因:

    你可能没有正确配置 VSCode 的任务(Task)或调试(Debug)配置,导致没有快捷按钮。


    解决方法:

    1. 配置 VSCode 的任务(Task):

      • 打开 .vscode/tasks.json,如果没有则新建。
      • 示例内容:
        {
          "label": "Build",
          "type": "shell",
          "command": "cmake --build build --target all",
          "group": "build"
        }
        
    2. 配置调试(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"
        }
        
    3. 添加快捷按钮:

      • 在 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.jsonlaunch.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 项目。如果还有具体错误信息,欢迎继续提问,我可以帮你逐条分析!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月14日