Clion STM32CubeMX 项目

news2025/1/11 14:49:29

系列文章目录


前言

最后修改 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.coloradmin.cn/o/1654659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透之sql盲注(时间/boolean盲注)

sql盲注:sql盲注意思是我们并不能在web页面中看到具体的信息,我们只能通过输入的语句的真假来判断。从而拿到我们想要的信息。 我们通常使用ascii值来进行盲注。 目录 手动注入: 时间盲注: 布尔盲注: python脚本注…

gitlab集群高可用架构拆分部署

目录 前言 负载均衡器准备 外部负载均衡器 内部负载均衡器 (可选)Consul服务 Postgresql拆分 1.准备postgresql集群 手动安装postgresql插件 2./etc/gitlab/gitlab.rb配置 3.生效配置文件 Redis拆分 1./etc/gitlab/gitlab.rb配置 2.生效配置文件 Gitaly拆分 1.…

C# 和 Qt 相比的一些优势

C# 和 Qt 都是流行的软件开发工具,它们各自具有不同的优势,适用于不同的开发场景。以下是 C# 和 Qt 相比的一些优势。相比之下,Qt 也有其独特的优势,特别是在跨平台 GUI 应用程序开发方面。然而,C# 的这些优势使得它在…

又发现一个ai生成音乐的网站-heymusic

网址 https://heymusic.ai/ 尴尬,不挂梯子能登录进来,但是谷歌账号注册不了,刷新了几遍也没注册上。 看了下价格,应该不是免费的,所以也没了试用的兴趣。 我也不想用别的邮箱注册了,所以只能简单的水一…

DenseCLIP环境配置

直接看raoyongming/DenseCLIP: [CVPR 2022] DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting (github.com) 但这里的环境配置可能和现在不太适配,自己配了好久没弄好 后面尝试了另外的版本的(但这个版本少了一些内容&#…

【MM32F3270火龙果】点亮led

文章目录 前言GPIO的工作模式一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、操作GPIO点亮led2.1 初始化gpio2.2 写gpio 三、示例代码总结 前言 本文将介绍如何在MM32F3270火龙果微控制器上使用Keil开发环境点亮LED。MM32F3270火龙…

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件&#…

大语言模型入门介绍(附赠书)

自2022年底ChatGPT的震撼上线以来,大语言模型技术迅速在学术界和工业界引起了广泛关注,标志着人工智能技术的又一次重要跃进。作为当前人工智能领域的前沿技术之一,代表了机器学习模型在规模和复杂性上的显著进步。它们通常由深度神经网络构成…

17.接口自动化学习-日志

1.日志输出渠道 &#xff08;1&#xff09;文件格式 xx.log &#xff08;2&#xff09;控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…

微信视频号怎么开店卖东西的?从开店到发货,具体流程来了

这两年&#xff0c;视频号逐渐展露头角&#xff0c;发展短&#xff0c;商家少&#xff0c;很多类目都没被商家占领&#xff0c;于是好多想创业的新手玩家就准备去视频号小店这个新平台闯一闯 那视频号小店是怎么开店卖东西的&#xff1f;今天我就给大家讲一讲视频号小店的正确…

modprobe: can‘t open ‘modules.dep‘: No such file or directory

使用modprobe会提示modprobe: cant open modules.dep: No such file or directory 直接输入depmod即可。 如果depmod没有效果&#xff0c;则需要重新配置编译你的根文件。 在busybox配置界面进入linux Module Utilities, 上下键选择depmod&#xff0c;并按 y 选中&#xff0c…

【三】DRF序列化进阶

序列化器的定义与使用 多表关联序列化 【1】准备工作 # settings.py DATABASES {default: {# 数据库引擎选择使用MySQLENGINE: django.db.backends.mysql,# 指定数据库名字&#xff0c;需提前创建NAME: books,# 指定数据库用户名USER: root,# 指定数据库用户密码PASSWORD: …

鸿蒙开发全攻略:华为应用系统如何携手嵌入式技术开启新篇章~

鸿蒙操作系统是华为自主创新的成果&#xff0c;打破了传统操作系统的局限。通过结合嵌入式技术&#xff0c;鸿蒙实现了跨平台、跨设备的高度融合&#xff0c;提供了流畅、智能的体验。华为应用系统与嵌入式技术的结合&#xff0c;提升了性能&#xff0c;丰富了用户体验。鸿蒙与…

翻译技巧早操练-(减译法)

hello&#xff0c;大家好&#xff0c;今天继续来学习翻译的技巧篇第二个-减译法。 往期回顾 翻译早操练-&#xff08;增译法&#xff09;-CSDN博客 减译法的目的就是为了译入语表达的通顺&#xff0c;如果原文的一些表达直接翻译到译入语即累赘还不合时宜&#xff0c;那么可以采…

多模态融合技术现实世界中的挑战与研究进展

在人工智能的诸多领域中&#xff0c;多模态融合技术正逐渐成为连接不同信息源的桥梁。这种技术通过整合来自视觉、听觉、文本等多种模态的数据&#xff0c;旨在提供更为丰富和精确的预测结果。然而&#xff0c;现实世界的数据往往是不完美和不完整的&#xff0c;这给多模态融合…

【运维网络篇】史上最全的 网络知识 思维导图!

01 TCP/IP网络协议栈 02 TCP/IP协议层次划分 03 传输介质简介 04 以太网帧结构 05 IP编址 06 ICMP协议 07 ARP协议 08 传输层协议 09 路由基础 10 静态路由基础 11 距离矢量路由协议——RIP 12 链路状态路由协议——OSPF 13 HDLC&PPP原理与应用 14 帧中继…

MY SQL 实验一:

一、实验目的 通过实验了解MYSQL数据库服务器的基本架构及基本的使用方法。 二、实验原理、条件 本实验采用著名的开源数据库软件MYSQL 作为实验平台。MYSQL有多种版本&#xff0c;常用的是服务器版。数据库引擎是用于存储、处理和保护数据的核心服务。MYSQL有多个数据库引擎&a…

QT功能 实现动态内容国际化实验

文章目录 1、新建项目2、给头文件添加代码3、给源文件添加代码4、生成ts文件5、翻译ts文件中的内容6、运行效果 1、新建项目 随便新建一个默认项目即可&#xff0c;此步省略&#xff0c;如果新建项目都不会&#xff0c;就不应该来看这篇博文。 2、给头文件添加代码 相关代码如…

如何切换PHP版本

如果服务器上安装了多个php&#xff0c;可能会导致默认的php版本错误&#xff0c;无法启动swoole等服务&#xff0c; 查看命令行的php版本方法&#xff1a;https://q.crmeb.com/thread/9921 解决方法如下&#xff0c;选一个即可&#xff1a; 一、切换命令行php版本&#xff…

redis--安装

简介 官网&#xff1a;RedisInsight - The Best Redis GUI 各个版本官网下载地址&#xff1a;http://download.redis.io/releases/ Redis和Memcached是非关系型数据库也称为NoSQL数据库&#xff0c;MySQL、Mariadb、SQL Server、PostgreSQL Oracle 数据库属于关系型数据 应用…