赞
踩
通过我们简单易学的视频教程,快速掌握新版本的使用方法:
STM32 VS Code 扩展提供两种不同的项目创建选项:
将项目导入 VS Code 时,扩展程序将自动生成 .vscode 文件夹,其中包含编辑/编译/调试所需的元数据(假设项目中尚未存在)。
有关项目创建的全面指导,请观看我们的教程视频,标题为 "如何使用 STM32 VS Code 扩展创建项目",该视频为新用户和有经验的用户提供了分步指导。
如果安装了 STM32CubeMX,"启动 STM32CubeMX "按钮将打开 STM32CubeMX。它允许用户为所选设备创建、配置和生成初始化 C 代码。
要创建以 VS Code 为目标的项目,用户必须在 STM32CubeMX 的项目管理器面板中选择 CMake 的工具链。
有关 STM32CubeMX 的更多信息,请参阅 UM1718。
当选择 CMake 作为工具链时,STM32CubeMX CMake 生成器会生成以下文件:
STM32CubeMX 创建的项目目前不包含 .vscode 文件夹。当使用 "导入 CMake 项目 "按钮在 VS Code 中导入项目时,VS Code 扩展会自动创建该元数据文件夹。
该按钮可生成一个模板项目,其中包含构建项目、初始化 MCU 和分支到 main() 所需的最少一组源文件和元数据文件。这种项目类型的目标用户是需要最大灵活性、最少依赖性和完全所有权的最终用户。用户完全可以添加 HAL/LL 驱动程序,或从头开始编写自己的代码和驱动程序。
点击后,系统会提示用户输入项目名称。
命名项目后,文件浏览器将打开,允许用户浏览和选择项目目录。
下一步是选择目标,目标可以是设备或电路板。
随后,系统会显示项目摘要,用户可以在单击 "创建项目 "或 "操作 "完成项目创建过程之前查看详情。
成功创建后,VS Code 会向用户提供三种打开新项目的选项:
小贴士 在 VS Code C/C++ 世界中,通常的做法是每个项目只有一个 VS Code 实例。这是与 STM32CubeIDE 的主要区别,后者通常在一个工作区中打开多个项目。每个 VS Code 实例只有一个项目,可确保编辑器索引、构建和调试的上下文以最佳方式运行。因此,我们推荐第二种方案。
STM32 VS 代码扩展生成的项目结构如下:
该功能允许用户将 CMake 项目(空项目或 STM32CubeMX 生成的项目)导入 VS Code。
导入程序会检查项目是否已包含编辑/编译/调试所需的 json 文件。如果这些文件尚不存在,扩展程序将生成它们。
注意:
在 VS Code 中通过文件 -> 打开文件夹打开项目,而不是使用 STM32 VS Code 扩展的导入 CMake 项目,不会自动生成 json 文件。
随后,用户会看到一个项目摘要,允许他们在单击 "导入项目 "或 "操作 "完成流程之前查看详细信息。
成功导入后,VS Code 会为用户提供三种打开项目的选项:
启动 STMCUFinder
如果安装了 ST-MCU-FINDER,该按钮将打开 ST-MCU-FINDER,允许用户浏览各种 STM32 和 STM8 微控制器、微处理器、开发板和示例。有关 ST-MCU-FINDER-PC 的更多信息,请参阅 DB3190。
如果安装了 ST-MCU-FINDER,该按钮将打开 ST-MCU-FINDER,允许用户浏览各种 STM32 和 STM8 微控制器、微处理器、开发板和示例。有关 ST-MCU-FINDER-PC 的更多信息,请参阅 DB3190。
该功能允许用户通过 USB 端口升级设备或电路板的固件。
提示:在首次调试启动之前,许多电路板都需要更新 ST-LINK 固件!
要选择构建目标,首先要
要添加构建目标,首先要
要构建项目,请单击 "构建 "选项,如下图所示。输出控制台将显示构建结果。
要快速了解项目调试,请观看我们的教程视频,标题为 "如何使用 STM32 VS Code Extension 进行调试",其中提供了针对新用户的分步说明。
launch.json 文件包含有关调试配置的信息。该扩展创建了两种默认调试配置:
用户可通过编辑 launch.json 文件修改和创建自己的配置。有关创建新启动配置的更多详情,请参阅相关章节。
注意
我们建议在启动调试程序之前更新 STLINK 固件,以防止出现潜在问题。更多信息,请参阅 "无法启动调试 "一节。
要启动调试,请选择启动配置并单击 "启动 "按钮。在此阶段,用户可以观察局部变量和全局变量、在观察堆栈中加入表达式、设置断点以及查看外设寄存器。
要创建新的启动配置,请按照以下步骤操作:
如果您有多个使用 CMake 的软件或工具,VS Code 可能会引用扩展所需的不正确版本。如果出现这种情况,您可能会遇到编译错误,提示信息为:需要 CMake 3.22 或更高版本。您正在运行 x.y.z 版本。
要解决这个问题
在使用旧版本的 STM32CubeMX、STM32CubeCLT 或扩展本身编译项目的情况下,重建项目有时可能会失败。为防止或解决此问题,可通过设置或使用键盘快捷键 Ctrl + Shift + P 打开 VS Code 命令调板,然后搜索 CMake:删除缓存并重新配置。
如果调试器无法连接到电路板,请首先查看调试控制台,检查根本原因。如果看到 "初始化 STLINK 设备时出错。原因: 需要升级 STLINK 固件,只需点击升级 STLINK 固件功能即可解决此问题。
当涉及到大型复杂项目时,用户在尝试在自己的 PCB 上调试 STM32CubeMX 生成的应用程序时可能会遇到一些问题。
我们的建议是创建一个新的空项目,其中只包含启动 MCU 所需的最小源文件集。如果该项目能在设备上编译、闪烁和调试,那么剩余的问题可能来自 STM32CubeMX 生成的代码、用户代码或选项字节不匹配。
将项目从一种工具迁移到另一种工具并不是一项复杂的任务,但确实需要遵循特定的步骤顺序。
迁移所需的步骤数量因项目的原始起点和所依赖的工具而异。一般来说,迁移过程可分为三类。请确定最适合您项目的类别,以确保迁移成功。
要将基于类别 1 或类别 2 的项目迁移到新的 VS Code 解决方案,请按照以下步骤操作。
确保已安装 STM32CubeMX v6.11.0、STM32CubeIDE v1.15.0 和 STM32CubeCLT v1.15.0 或更新版本。
在更新任何工具或嵌入式软件时,建议创建还原点或备份副本,以防升级或迁移结果不理想。我们的建议是,要么在版本库中提交/标记,要么创建整个项目的备份。
迁移可能需要升级到新版本的 STM32CubeMX,这可能会引入新的 HAL 驱动程序或代码生成中的细微变化。
在继续将项目迁移到本地 CMake 项目之前,请确保更新后 STM32CubeIDE 中的构建和调试结果符合预期。为此3.1 使用 STM32CubeIDE v1.15.0 或更新版本打开项目
3.2. 打开 STM32CubeMX ioc 文件,如果有新的 STM32Cube 固件包,则将项目迁移到该固件包上。
3.3. 重新生成代码
3.4. 使用 STM32CubeIDE 构建和调试项目
删除旧文件
由于新的 STM32CubeMX 和 VS Code 解决方案所引入的概念变化,用户有必要手动删除某些与项目相关的元数据。
STM32CubeMX 会在后续步骤中再次生成相应的元数据,并通过 VS Code 扩展的更新版本进一步增强。代码本身保持不变。
在继续删除元数据文件之前,我们建议创建项目的备份还原点。
a. 如果您的项目仅通过 STM32CubeIDE 访问过,尚未使用 STM32 VS Code for 扩展打开,请删除以下文件:
- a.1. .settings/ : folder containing some metadata
- a.2. .cproject : file containing build configuraitons for STM32CubeIDE
- a.3. .project : file containing project natures and paths to c/h folders and/or files
b. 如果您的项目以前使用过 STM32CubeIDE 和 STM32 VS Code 扩展 1.0.0,除前面提到的文件外,请删除以下文件:
- b.1. .vscode folder
- b.2. build folder
- b.3. cmake folder
- b.4. CMakeLists.txt
- b.5. CMakePresets.json
- b.6. nvcpkg_configuration.json
删除指定文件后,我们将开始重新创建基于 CMake 的新构建结构。只有 STM32CubeMX 可以管理这个新结构。
使用 STM32CubeMX 生成 CMake 项目
要继续迁移过程,请按照以下步骤操作:
5.1. 启动 STM32CubeMX 6.11.0 或更新版本(单机模式,不在 STM32CubeIDE 内)
5.2. 加载要迁移的项目
5.3. 访问项目管理器面板
5.4. 将 "工具链/集成开发环境 "从 "STM32CubeIDE "切换到 "CMake"。
5.5. 点击 "GENERATE CODE(生成代码)"按钮
当选择 CMake 作为工具链时,STM32CubeMX CMake 生成器会生成以下文件:
- cmake\ 文件夹: 此文件夹包含 CMake 相关文件:
- stm32cubemx" 文件夹: 此文件夹包含 CMakeLists.txt。只有 STM32CubeMX 管理此文件
- Gcc-arm-none-eabi.cmake: 由 STM32CubeMX 生成后,用户可以编辑该文件
- CMakeLists.txt: 由 STM32CubeMX 生成后,用户拥有并管理此文件
- CMakePresets.json: 由 STM32CubeMX 生成后,用户拥有并管理此文件
- STM32xxxxxxx_FLASH.ld: 由 STM32CubeMX 生成的链接器脚本,表明 CMake 被选为工具链
现在您可以通过命令行编译您的项目,方法是依次输入以下命令:
- PROJ_FOLDER$> cmake -B build -G Ninja
- PROJ_FOLDER$> cmake --build build -j
设置新的 VS Code 环境
对于 VS Code 的新用户来说,使用 VS Code 中的配置文件概念将 STM32 环境沙盒到自己的配置文件中可能会很有帮助。点击此处了解更多信息。
要将项目导入 VS Code,请按照以下步骤操作:
- 6.1. 打开 VS Code 并安装新扩展 2.0.0 版,该版本可与新的 STM32CubeMX 6.11.0 或更高版本以及 STM32CubeCLT 1.15.0 或更高版本一起使用。
- 6.2. 使用 "Import local project(导入本地项目)"按钮/命令,指向 STM32CubeMX 生成的项目文件夹。
导入项目后,VS Code 扩展会自动生成以下文件:
.vscode 文件夹: 包含元数据的文件夹:
c_cpp_properties.json: 该文件可确保 C/C++ 编辑器索引正常工作
extensions.json: 该文件提供额外的扩展建议
launch.json: 此文件自动生成调试配置
tasks.json: 此文件是执行某些任务(如加载 flash)的模板
注意:
首次在 VS Code 中打开项目时,可能会遇到一些提示,例如
选择 CMake 预设: 选择调试预设
安装 Better C++ Syntax: 高亮显示 C 和 C++ 语法的高效扩展程序
配置 CMake 选项可见性: 使用设置中的 cmake.options 属性自定义视图
在新生成的 CMakeList.txt 文件中添加您的私有文件夹源路径
如果您的项目包含私有文件夹,在 CMakeList.txt 文件中包含其路径至关重要。
如果需要,更新 CMake 文件以使用项目中已有的链接器脚本:
这可以在 \cmake\gcc-arm-none-eabi.cmake 文件中修改。示例
set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -T \"${CMAKE_SOURCE_DIR}/STM32F407VGTx_FLASH.ld\"")
构建和调试项目
更多详情,请参阅 "构建项目 "和 "调试项目 "部分。
对于高级调试功能,我们建议同时使用 STM32CubeIDE 作为调试器工具。更多详情,请参阅 "使用 STM32CubeIDE 进行高级调试"。
恭喜您!您现在已经设置好了。您可以随时在 STM32CubeMX 中更新配置。生成的 CMake 文件和源代码可在 VS Code 中正常运行。
当您打开资源中提到的一些外部网站时,VS Code 可能会提示您,因为它不会自动信任这些网站。
要避免这种提示,请打开 "配置受信任的域 "并信任所需的域。
如果您需要 VS Code 中不具备的高级调试功能,您可以将 STM32CubeIDE 用作 VS Code 的辅助调试工具。
为此,您需要将项目创建的 elf 文件从 VS Code 导入 STM32CubeIDE。这样,您就可以使用 STM32CubeIDE 的所有基本和高级调试功能。尽管没有导入 C/C++ 代码,源代码查找仍可正常运行。通过这种方法,您可以结合两种工具的优势,使用 VS Code 进行编辑、编译和调试,同时使用 STM32CubeIDE 的高级调试功能。
要开始使用,请打开 STM32CubeIDE 并选择文件 > 导入 > C/C++ > STM32 Cortex®-M 可执行文件。
然后,浏览并选择 elf 文件,并指定目标设备。
如有必要,请编辑启动配置并点击调试。
就是这样!现在,您可以使用 STM32CubeIDE 的高级调试功能了。
要在安装最新版本的同时保留以前版本的 STM32 VS 代码扩展,需要按照以下步骤创建新的配置文件:
对于 VS Code 的新用户,请在此处阅读有关配置文件的更多信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。