Clion STM32CubeMX 项目

系列文章目录


前言

最后修改 2024 年 4 月 16 日

操作系统:Windows / Linux / macOS

所需工具 STM32CubeMX、GNU ARM 工具链

项目格式: CMake

兼容配置: OpenOCD 运行与调试/嵌入式 GDB 服务器

        对于以 STM32 板卡为目标的嵌入式项目,CLion 与 STM32CubeMX 集成。

        您可以将 CubeMX 生成的 .ioc 文件作为项目打开,CLion 将自动创建 CMake 项目结构。您也可以从头开始一个新项目--向导将帮助您在 CubeMX 中进行配置。

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

目前不支持以下电路板配置: STM32MP1、

双核 STM32H7 和启用 TrustZone(R) 的 STM32L5。


一、所需工具

1.1 STM32CubeMX

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

1.2 GNU ARM 工具链

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

        要让 CLion 检测到工具链,系统路径(PATH)中应包含该工具链。您可以通过在命令行中运行 arm-none-eabi-gcc 进行检查,系统应能识别该命令。

  • 在 Linux 和 macOS 上,请确保工具链路径位于 ~/.profile 中(而非 ~/.bash_profile 或 ~/.zprofile 等特定于 shell 的配置文件中)。
  • 在 Windows 中,切换到系统工具链(推荐)。或者,也可以使用 MinGW / MinGW-w64 环境。

        在 "设置"|"构建、执行、部署"|"嵌入式开发 "中,您可以检查是否正确检测到 CubeMX 的位置,并根据需要手动设置路径。如果不打算使用 OpenOCD,请将 OpenOCD 位置字段留空。

二、从 .ioc 文件打开项目

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

检查 .ioc 文件名是否包含空格、非拉丁符号或其他特殊字符。

三、创建新项目

在 Apple Silicon (M1, M2) 机器上,CLion 的 STM32CubeMX 项目向导存在一个已知问题。作为一种变通方法,可以考虑在 STM32CubeMX 应用程序中创建项目,然后如上所述在 CLion 中打开它。

        对于新项目,您有两种选择:a)在 CubeMX 中配置 MCU 并生成代码,然后在 CLion 中打开 .ioc 文件;或者 b)按照下面的方法从头开始创建一个项目。

  1. 转到文件 | 新项目,选择 STM32CubeMX 作为项目类型。CLion 将为默认的 STM32F030F4 MCU 创建 .ioc 文件:.ioc 文件是包含静态初始化设置的 CubeMX 原始项目文件。在 CLion 中,该文件是只读文件,在当前步骤中,它是下一步将在 CubeMX 中设置的配置的占位符。
  2. 现在,您需要切换到 CubeMX 来生成项目源并填充 .ioc 文件。单击 "Open with STM32CubeMX(用 STM32CubeMX 打开)"链接,从 CLion 打开 CubeMX。

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

    更换 MCU 时,CubeMX 会重置项目名称。在项目管理器中手动提供名称,然后接受覆盖项目的建议。

    硬件配置准备就绪后,检查工具链/IDE 字段是否设置为 STM32CubeIDE,并选择在根目录下生成,然后单击生成代码:

  4. 如果不打算使用 OpenOCD,请跳过这一步(点击取消)。

    回到 CLion,当 CMake 项目加载完成后,系统会提示您选择一个电路板配置文件。建议列表包括 OpenOCD 随附的电路板配置文件,它们位于 Openocd-Installation/share/openocd/scripts/board 中:

    您还可以在以后的 OpenOCD 运行/调试配置设置中选择电路板配置文件,包括自定义配置文件。

    点击 Copy to Project & Use(复制到项目并使用),选中的电路板配置文件将被添加到项目树中。您可以在编辑器中打开并调整该文件。

四、编辑源代码

        在 CubeMX 中更改 MCU 配置并单击 "生成代码 "时,CLion 项目会自动更新:

         您也可以手动更新项目:右键单击项目视图中的 .ioc 文件,然后选择使用 STM32CubeMX 更新 CMake 项目。

        在编辑 CubeMX 生成的文件时,请始终将代码括在 /* 用户代码 BEGIN ... */ 和 /* 用户代码 END ... 中。*/ 和 /* 用户代码结束 ... */ 伪注释。这将防止代码再生时被 CubeMX 覆盖。此外,考虑将代码片段提取到单独的 .c 或 .h 文件中(参见下一点)。

        如果您添加了源文件或头文件,请将它们放在 Src 和 Inc 目录中。

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

五、构建项目

        要构建项目,请使用以下选项之一:

        运行或调试 OpenOCD 或嵌入式 GDB 服务器配置。这两种配置都将 "构建 "作为 "启动前 "步骤:

        使用 "构建 "操作手动构建项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/679588.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联发科天玑AI开发套件亮相:开发智能终端生成式AI应用的全面工具

在今日召开的天玑开发者大会2024(MDDC 2024)上,联发科向外界展示了其最新力作——天玑AI开发套件。该套件是为合作伙伴提供终端生成式AI应用开发的一站式工具包,意在简化并加速开发过程。 联发科推出的天玑AI开发套件包括四大核心…

Unity数据持久化之Json

Json概述 Json是什么? 全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…

QTDay3

思维导图 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//窗口相关设置this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWi…

固定资产管理系统参考论文(论文 + 源码)

【免费】固定资产管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282536 固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。 固…

Crowd counting 系列NO.2—MCNN

声明:博客是用latex写的,所以直接用图片来展示吧,效果是一样的。下载资源网上都很容易搜到,如需下载资源,请留言。

JAVA栈相关习题3

1.将递归转化为循环 比如&#xff1a;逆序打印链表 // 递归方式void printList(Node head){if(null ! head){printList(head.next);System.out.print(head.val " ");}} // 循环方式void printList(Node head){if(nullhead){return;}Stack<Node> snew Stack<…

【算法刷题 | 贪心算法09】4.30(单调递增的数字)

文章目录 16.单调递增的数字16.1题目16.2解法&#xff1a;贪心16.2.1贪心思路16.2.2代码实现 16.单调递增的数字 16.1题目 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的…

【stm-4】PWM驱动LED呼吸灯 PWM驱动舵机PWM驱动直流电机

1.PWM驱动LED呼吸灯 void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); //结构体初始化输出比较单元 void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef*…

Python爬虫获取豆瓣电影Top100

大家好&#xff0c;我是秋意零。 今天分析一篇&#xff0c;Python爬虫获取豆瓣电影Top100。 在此之前&#xff0c;我没有学习过爬虫&#xff0c;只有一丢丢的Python基础。下面效果的实现源码几乎没经过我&#xff0c;而是AI百老师。我主要负责了对应的调试以及根据我想要的功…

分红76.39亿,分红率再创新高,成长活力无限的伊利带来丰厚回报

伊利47万股东&#xff0c;又等来了一个好消息。 4月29日&#xff0c;伊利股份发布2023年报&#xff0c;实现营业总收入1261.79亿元&#xff0c;归母净利润104.29亿元&#xff0c;双创历史新高&#xff0c;实现连续31年稳健增长。 在递交亮眼成绩单的同时&#xff0c;乳业巨头伊…

CSDN上是不是有机器人点赞和收藏?

我在CSDN上写作&#xff0c;主要是本来是记录学习工作中的一些知识点&#xff0c;看得人不多本来就能预想到的。 但是今天发现五一写的一篇博客&#xff0c;出现了很奇怪的阅读、点赞、收藏数。只有2个人阅读&#xff0c;但是有8个点赞&#xff0c;还有5个收藏。 我不禁怀疑CS…

【CSS基础--CSS选择器的常见用法】

CSS选择器的常见用法 1.CSS介绍1.1 基本语法规范1.2 引入样式1.3 规范 2. CSS选择器2.1 标签选择器2.2 类选择器2.3 ID选择器2.4 复合选择器 1.CSS介绍 CSS&#xff08;Cascading Style Sheet&#xff09;&#xff0c;层叠样式表&#xff0c;由于控制页面的样式。CSS能够对网页…