小工具知识网

当前位置: 首页 > 行业知识 > 【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试

行业知识

【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试

2026-11-03 07:49:14 来源:互联网转载

【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试


文章目录

  • 【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试
  • 缘由写在前面
  • 一、所需软件+插件
  • 二、扩展&软件安装
    • 2.1 安装vscode扩展
    • 2.2 安装cmake与ninja
    • 2.3 安装STM32 CubeIDE 与CubeCLT
    • 三、工程配置
      • 3.1 CubeMX生成工程
      • 3.2 VScode中导入工程
      • 3.3 VScode中CMake与调试配置
        • 3.3.1 gcc-arm-none-eabi.cmake配置
        • 3.3.2 launch.json配置(调试配置)
        • 四、结语

          缘由写在前面

          在整了一台intel处理器的MacBook后(为了处理照片与视频),就想着配一下32的开发环境,不能扔下嵌入式开发;遂在网上找macOS的32环境配置,方案基本是 Clion/VS Code + Openocd 的形式,奈何尝试后我遇到了以下问题:

          • Clion+openocd下只能下载无法调试的问题,即使更换clion版本也没有解决
          • Clion的gdb工具更是只能使用捆绑,调用外部就会提示没有可用工具

            总之最后放弃了openocd的方案;最新的MDK6插件方案也由于keil等不支持macos(MDK6的转化问题)而不可行。

            于是本人在参考以下在win环境下配置的文章后

            【电赛-软件】基于ST官方插件 配置VScode开发STM32

            操作中发现cubemx生成的工程不再有.cproject 的 STproject 类型,仅依靠CubeCLT与CubeMX两软件也没能在我的MAC上实现调试,因此本人结合macos的实际问题做了调整,给出一个基于官方插件与调试应用的macOS下vscode开发STM32环境搭建方案总结,希望能给上述等方法都无效的朋友们一个选择。


            一、所需软件+插件

            1. VScode + STM32 VS Code Extension + C/C++等扩展
            2. STM32 CubeIDE
            3. STM32 CubeCLT
            4. STM32 CubeProgrammer
            5. ninja编译工具
            6. CMake

              *以上均建议默认路径安装

            二、扩展&软件安装

            2.1 安装vscode扩展

            扩展中搜索 STM32 VS Code Extension 、C/C++ 、CMake(Tools)进行安装

            C/C++等扩展同方法安装

            2.2 安装cmake与ninja

            • CMake

              vscode将利用cmake构建程序 ,因此需要下载cmake程序并添加进系统变量;

              方法一:在官网下载DMG,安装完毕GUI版本之后,再手动添加变量;

              方法二:利用homebrew安装(如果因为可能的网络问题安装失败,尝试方法一)

              具体步骤参照:macOS 如何安装 cmake

              • ninja

                利用homebrew安装,终端输入:

                 brew install ninja

                安装完毕后,终端输入以下指令如果能返回版本号则安装成功:

                 ninja --version

                2.3 安装STM32 CubeIDE 与CubeCLT

                下载安装即可,都是安装器一路next的

                至此,需要安装的部分完成,接下来到vscode中配置工程


                三、工程配置

                3.1 CubeMX生成工程

                3.2 VScode中导入工程

                如上文,cubemx中生成的工程不再有.cproject 的 STproject 类型,因此在生成的工程中选择 .ioc 文件进行导入,插件仍能够识别工程,且能创建出对应的 CMakelist 文件

                3.3 VScode中CMake与调试配置

                3.3.1 gcc-arm-none-eabi.cmake配置

                在通过STM32 VS Code Extension 导入工程后,会默认生成 cmake -> gcc-arm-none-eabi.cmake 的cmake配置文件:

                该文件中以下内容,包含了工具链的默认安装路径;其中标识中包含MAC 的,即为macos下的默认安装路径,对照无误即可

                set(WINDOWS_ST_CLT_PATH "C:/ST/STM32CubeCLT/STM32CubeCLT/GNU-tools-for-STM32/bin/")set(MAC_ST_CLT_PATH "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/")if(EXISTS "${WINDOWS_ST_CLT_PATH}")    set(TOOLCHAIN_DIRECTORIES ${WINDOWS_ST_CLT_PATH})elseif(EXISTS "${MAC_ST_CLT_PATH}")    set(TOOLCHAIN_DIRECTORIES ${MAC_ST_CLT_PATH})else()    # Try to find an STM32CubeIDE installation to use for the toolchain.    file(GLOB TOOLCHAIN_DIRECTORIES        "C:/ST/STM32CubeIDE_*/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"        "/opt/st/stm32cubeide_*/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"        "/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"    )endif()

                配置完毕以上文件后,点击左侧栏中的CMake 插件,生成中选择debug 配置(如果没有debug配置,点击小铅笔的编辑标志,会),点击右上角生成标志,等待工程构建,控制台中显示构建出.elf文件即为成功

                3.3.2 launch.json配置(调试配置)

                左侧栏中点击运行与调试,进入调试配置;通常一个新的工程中默认没有launch.json,此时能够点击创建launch.json文件来创建一个调试配置

                在json文件中,重点关注以下四个变量的路径并进行如下配置:

                "miDebuggerPath": "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/arm-none-eabi-gdb","miDebuggerServerAddress": "localhost:3333","debugServerPath": "/opt/ST/STM32CubeCLT/STLink-gdb-server/bin/ST-LINK_gdbserver","debugServerArgs": "--stm32cubeprogrammer-path ${command:vscode-embedded.st.cubeprogrammer} --swd --port-number 3333",

                其中,

                miDebuggerPath为解释器的路径;

                miDebuggerServerAddress为调试端口

                debugServerPathSTlink-server的路径

                debugServerArgs为CubeProgrammer的路径

                以下为完整的launch.json内容,可供参考

                {  "version": "0.2.0",  "configurations": [    {      "name": "Launch",      "type": "cppdbg",      "request": "launch",      "cwd": "${workspaceFolder}",      "program": "${command:cmake.launchTargetPath}",      "MIMode": "gdb",      "miDebuggerPath": "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/arm-none-eabi-gdb",      "miDebuggerServerAddress": "localhost:3333",      "debugServerPath": "/opt/ST/STM32CubeCLT/STLink-gdb-server/bin/ST-LINK_gdbserver",      "debugServerArgs": "--stm32cubeprogrammer-path ${command:vscode-embedded.st.cubeprogrammer} --swd --port-number 3333",      "serverStarted": "Waiting for connection on port .*\.\.\.",      "stopAtConnect": true,      "postRemoteConnectCommands": [        {          "text": "load build/debug/build/untitled.elf"        }      ],      "logging": {        "engineLogging": true      },      "preLaunchTask": "Build"    }  ]}

                配置完成后,如已构建完毕elf文件,点击

                即可实现调试


                四、结语

上一篇:Freemarker源码深度解析,探索核心功能与实现机制之道

下一篇:宝塔面板教程揭秘,轻松修改标题技巧!