RYMCU

使用 CLion 进行嵌入式开发

ronger 1 年前
# CLion # 嵌入式开发 # openocd

本教程翻译自 STM32CubeMX projects, 并做了相应修改,如有不当之处欢迎指出 😄

对于面向 STM32 开发板的嵌入式项目,CLion 提供了与 STM32CubeMX 的集成方式。 您可以在 CLion 中打开由 CubeMX 生成的 .ioc 文件作为项目,CMake 项目结构将自动创建。 或者,您可以在 CLion 中从头开始新项目,项目向导将帮助您在 CubeMX 中对其进行配置。

CLion 中的 STM32CubeMX 支持是 OpenOCD + STM32CubeMX 插件的一部分。因此,项目设置和项目创建过程的某些步骤将与OpenOCD 结合在一起。 但是,STM32CubeMX 项目不限于仅与 OpenOCD 一起使用:您还可以设置更通用的嵌入式 GDB 服务器运行/调试配置。 在后一种情况下,请忽略与 OpenOCD 相关的设置以及项目设置步骤。

必备工具

所有平台

  • STM32CubeMX
    CubeMX是用于配置STM32微控制器并生成相应C代码的图形工具。 在CubeMX中,您可以设置CPU和外围设备,并调整频率和引脚模式。 它生成一个存根项目,CLion随后将其转换为CMake项目。

  • GNU ARM toolchain
    GNU ARM 工具链是在桌面上启动的一组跨平台工具,而构建结果只能在目标 ARM MCU 环境下运行。

    为了让 CLion 检测到工具链,需要将其加入系统环境变量 PATH 中。 您可以通过从命令行运行 arm-none-eabi-gcc -v 进行检查,若出现下面的输出,则说明编译工具安装已经成功。否则请检查环境变量。

    image.png

    在 Linux 和 macOS 上,请确保工具链路径位于 ~/.profile 中(而不是在 shell-specific 的配置中,例如 ~/.bash_profile~/.zprofile)。

Settings/Preferences | Build, Execution, Deployment | Embedded Development,您可以检查是否正确检测到工具链,并根据需要手动设置路径。 如果您不打算使用OpenOCD,请将 OpenOCD Location 字段留空。

Windows 平台的特定要求

  • 对于 GNU ARM Toolchain,请使用版本 2019-q3 或 2018-q2(或更早版本)。 请参阅 2018-q4 问题。
  • 仅支持 MinGWMinGW-w64 环境(CPP-15034)。

从 .ioc 文件打开一个项目

  • 如果您已经有一个包含.ioc文件的项目,请调用 File|Open, 选择 .ioc 文件,然后选择 Open as Project 。 CLion 将自动生成 CMake 项目结构。

如果您已有嵌入式项目,请在 CLion 中打开现有项目。当您第一次在编辑器中打开 .ioc 文件时,CLion 将为您生成 CMake 项目。

创建一个新项目

对于新项目,您可以从配置 MCU 并在 CubeMX 中生成代码开始,然后在 CLion 中打开 .ioc 文件,也可以如下所述从头开始创建项目。

  1. New Project 向导(File | New Project)中,选择 STM32CubeMX 作为您的项目类型。 CLion 将为默认的STM32F030F4 MCU 创建 .ioc 文件

    cl_embed_defaultproject.png

    .ioc 文件是包含静态初始化设置的 CubeMX 原始项目文件。 在 CLion 中,此文件为只读文件,在当前步骤中,它是将在下一步在 CubeMX 中设置的配置的占位符。

  2. 现在,我们需要切换到 CubeMX 来生成项目源并填充 .ioc 文件。 单击 Open with STM32CubeMX 链接以直接从 CLion 打开 CubeMX。

  3. 在CubeMX中,已经为新创建的项目设置了配置。 单击 STM32F030F4Px 调用 MCU/Board Selector 并更改默认 MCU:

    cl_embed_cubemx.png

    MCU 更改时,CubeMX 会重置项目名称。 因此,我们需要在 Project Manager 中手动提供名称,然后接受覆盖项目的建议。

    准备好硬件配置后,检查 Toolchain / IDE 字段是否设置为 STM32CubeIDE 并选中 Generate Under Root,然后单击 Generate Code

    cl_embed_cubemx_generate.png

  4. 如果您不打算使用 OpenOCD,请跳过此步骤(单击 Cancel
    回到 CLion,当 CMake 项目加载完成时,会提示我们选择开发板配置文件。建议清单取自 OpenOCD 附带在 OpenOCD-Installation/share/OpenOCD/scripts/board 文件夹中提供的一组板配置文件:

    cl_embed_bardconfigs.png

    稍后,您还可以在 OpenOCD Run/Debug configuration 的设置中选择适当的开发板配置,包括自定义配置。
    单击 Copy to Project & Use,将选定的开发板配置文件添加到项目树。 您将能够在编辑器中打开和调整它。

编辑源代码

  • 当您在CubeMX中更改MCU配置并单击 Generate Code 时,您的 CLion 项目将自动更新:

    cl_embed_prjupdate.png

    您也可以手动更新项目:为此,请从 Tools | CMake 或者 File 下使用 Update CMake project with STM32CubeMX 更新 CMake 项目。

  • 在编辑 CubeMX 生成的文件时,请始终将您的代码包含在 /* USER CODE BEGIN ... *//* USER CODE END ... */ 伪注释中。 这样可以保护您的代码在代码重新生成期间不会被 CubeMX 覆盖。 另外,请考虑将代码片段提取到单独的 .c.h 文件中(请参阅下一点)。

  • 如果添加源文件或包含文件,请将它们放在 SrcInc 目录中。

  • 每次更新项目时,CLion 都会从模板中重新生成 CMakeLists.txt。 如果需要在 CMake 脚本中进行更改(例如,添加外部库或FPU支持),请在 CMakeLists_template.txt 中进行更改,然后使用 Update CMake project with STM32CubeMX 更新 CMake 项目。

编译项目

选择以下方式之一 :

cl_openocd_beforelaunch.png

后发布评论