STM32CubeMX联合CLion开发环境搭建

news2024/11/19 19:39:41

STM32CubeMX联合CLion开发环境搭建

在这里插入图片描述

文章目录

  • STM32CubeMX联合CLion开发环境搭建
    • 1. STM32CubeMX与CLion简介
      • 1.1 STM32CubeMX
      • 1.2 HAL库
      • 1.3 CLion
    • 2. 部署过程
      • 2.1 软件部署环境
      • 2.2 STM32CubeMX下载及安装
      • 2.2 OpenOCD下载与安装
      • 2.3 CLion设置
    • 3. 第一个STM32项目

1. STM32CubeMX与CLion简介

1.1 STM32CubeMX

STM32CubeMX是一种图形化配置工具,用于为STM32微控制器生成启动代码和初始化配置。它可以帮助简化STM32项目的初始化过程,并提供了一种可视化的方式来配置引脚、时钟、外设和中断等。HAL(Hardware Abstraction Layer)库是STMicroelectronics提供的一种高级API层,用于编写STM32微控制器的应用程序。
在这里插入图片描述

相较于传统ST系列开发,STM32Cube具有以下优势:

  • 综合工具链:STM32Cube是STMicroelectronics提供的一套综合性工具链,包括了STM32CubeMX、HAL库、LL库、中间件和示例代码等。它们可以协同工作,使得开发过程更加简化和高效。

  • 图形化配置工具:STM32CubeMX是STM32Cube的核心组成部分,提供了图形化的配置工具。它可以帮助开发人员通过简单的拖拽和配置来初始化和配置STM32微控制器的引脚、时钟、外设等,减少了手动编写和调试配置代码的工作量。

  • HAL和LL库:STM32Cube提供了两种不同级别的软件抽象层,即HAL(Hardware Abstraction Layer)库和LL(Low-Level)库。HAL库提供了更高级别的API函数,可以快速上手和开发,而LL库提供了更底层的接口,可以实现更高的灵活性和性能优化。

  • 高度可移植性:STM32Cube支持多个STM32微控制器系列,包括F0、F1、F2、F3、F4、F7、G0、G4、H7和L0等。这意味着您可以在不同型号的STM32微控制器之间共享和重用代码,减少了开发和维护的工作量,并实现了更好的项目可移植性。

  • 内置中间件和示例代码:STM32Cube提供了一系列中间件(如USB、TCP/IP、文件系统等)和示例代码,可以帮助开发人员更快速地实现常见的功能和应用。这些中间件和示例代码经过测试和优化,可以加速开发过程,并提供参考和指导。

  • 持续更新和支持:STM32Cube由STMicroelectronics进行持续更新和维护,确保与最新的STM32产品和技术保持同步。这意味着您可以获得最新的功能和修复,同时享受STMicroelectronics的技术支持和社区资源。-

1.2 HAL库

HAL库相对于标准库在STM32开发中具有以下优势:

  1. 抽象层:HAL库提供了一个硬件抽象层,将底层硬件与应用程序分离。这种抽象层使得开发人员可以更专注于应用程序的开发,而不必过多关注底层硬件的细节。它简化了硬件编程的复杂性,减少了代码量和开发时间。

  2. 一致性和可移植性:HAL库为不同型号的STM32微控制器提供了一致的API接口。这意味着您可以在不同的STM32微控制器之间共享和重用代码,而无需进行大量的修改。这种一致性和可移植性简化了跨平台开发和产品迁移的过程。

  3. 简化配置:HAL库与STM32CubeMX集成,提供了图形化的配置工具。这使得配置引脚、时钟和外设变得更加直观和简单。您可以使用图形界面轻松选择和配置所需的外设和功能,并生成相应的初始化代码。

  4. 内置驱动程序:HAL库提供了内置的驱动程序,用于操作和管理STM32微控制器的各种外设。这些驱动程序封装了硬件寄存器的访问和配置,提供了易于使用的API函数。这简化了对外设的初始化和配置,并提供了一致的接口,使得外设之间的切换更加方便。

  5. 丰富的功能支持:HAL库提供了广泛的功能支持,包括串口通信、SPI、I2C、定时器、中断、DMA等。这些功能模块的封装使得开发人员能够更轻松地实现复杂的应用需求,而无需从头开始编写底层代码。

HAL库的最大优势是官方推荐,而标准库函数版本已经不维护更新了

1.3 CLion

CLion是JetBrains公司开发的一款集成开发环境(IDE),专门用于C和C++语言开发。它提供了许多功能和工具,旨在提高C和C++开发的效率和质量。
在这里插入图片描述

2. 部署过程

2.1 软件部署环境

软件环境:

  • Windows11
  • STM32CubeMX
  • Clion-2021
  • Mingw
  • OpenOCD
  • arm-none-eabi-gcc

硬件环境STM32F103

J-Link

2.2 STM32CubeMX下载及安装

STM32CubeMX官方下载

https://www.st.com/en/development-tools/stm32cubemx.html

参考稚晖君 https://www.bilibili.com/read/cv6308000?spm_id_from=333.999.0.0

选择版本为6.4.0,高版本没有SW4STM32工程生成链

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下载后解压
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 OpenOCD下载与安装

OpenOCD

Windows上使用 OpenOCD 给 STM32 下载程序 - 腾讯云开发者社区-腾讯云 (tencent.com)

Releases · xpack-dev-tools/openocd-xpack (github.com)

在这里插入图片描述

解压到自己可以找的到的地方,将bin目录添加到环境变量中

在这里插入图片描述

参考
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
作者:稚晖君 https://www.bilibili.com/read/cv6308000?spm_id_from=333.999.0.0 出处:bilibili

选择zip形式

在这里插入图片描述

将解压后的bin目录加入环境变量

在这里插入图片描述

命令提示符有输出证明配置正确

在这里插入图片描述

2.3 CLion设置

设置clion

File-Setting-Buid,Execution,Deployment

添加一个mingw环境

CLion下载和mingw下载以及安装可以参考其他博主网上教程
CLion:http://t.csdn.cn/Zr9XX
mingw:http://t.csdn.cn/Ak4gO

在这里插入图片描述

检查一下CMake

在这里插入图片描述

配置完毕。

3. 第一个STM32项目

开始第一个STM32项目

在这里插入图片描述

点击create之后会生成一个.ioc文件,此文件与使用STM32CubeMX是等效的

在这里插入图片描述

点击此处能够使用STM32CubeMX打开.ioc

在这里插入图片描述

尝试点击一下

在这里插入图片描述

在这里插入图片描述

默认选中的芯片型号是STM32F030F4Px,我们可以在CubeMX中重新选择自己需要的芯片,一切操作都和使用Keil开发没有区别。

  • Project Name要与Clion中一致

  • 生成IDE类型选择SW4STM32

在这里插入图片描述

此处提示表达的是SW4STM32工程在之后的版本中被废弃了。

在这里插入图片描述

在这里插入图片描述

生成之后切换回CLion

在这里插入图片描述

打开File-Setting-Buid,Execution,Deployment

在这里插入图片描述

配置完成

在这里插入图片描述

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

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

相关文章

IntelliJ IDEA - 通过依赖名查找 Pom.xml 引入的源头坐标

问题描述 今天在新建项目的时候,发现一个注解(JsonInclude)不知道是哪个包的源头引入的,后来打开原来的老项目,查看对应的源文件,发现如图所示 但是这个 com.fasterxml.jackson.core:jackson-annotations:…

模型实战(13)之YOLOv8实现手语字母检测与识别+权重分享

YOLOv8实现手语字母检测与识别+权重分享 本文借助yolov8 实现手语字母的检测与识别:先检测手的ROI,进而对手语表达的字母含义进行识别全文将从环境搭建、模型训练及预测来展开对整个算法流程进行讲解文中给出了开源数据集链接及从 Roboflow 上的下载教程实现效果如下: 1. 环…

雪佛龙公司通过使用Liquid UI调动SAP EWM流程,在短短26天内将生产力提高了90%!

背景介绍 雪佛龙是一家美国跨国能源公司,最初被称为加州标准石油公司(Socal)。它的总部位于加利福尼亚州圣拉蒙,活跃于180多个国家。雪佛龙从事石油和天然气行业的各个方面,包括碳氢化合物勘探和生产;炼油、营销和运输…

【单片机】STM32单片机的矩阵键盘驱动,标准库,无阻塞方式的矩阵键盘读取

原理图: 从左到右、从上到下,按键是1到16,没有按键返回0: key.c #include "key.h"/* 按键初始化函数 */ void KEY_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, …

前端发送html字符串文本给后端,转PDF格式不正确

大无语事件,前端使用原始html table写出来在前端显示一直正确,但是一发给后端转PDF就失败(如图)。 想着是不是因为前端转义的问题,后来发现转不转的无所谓,然后发现后端本地转PDF也成功,但是通…

深入浅出设计模式 - 模板方法模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

修复u盘怎么做?4步快速完成u盘修复!

我的u盘用了好多年了,里面存了很多重要的照片。但最近不知道为什么我的u盘出现了各种问题,大家有什么修复u盘的好方法吗?或者我应该怎么样才能恢复我U盘里的重要数据呢? U盘作为一个便捷的存储工具,为我们保存数据提供…

SpringBoot整合SpringSecurity

一、概述 1.1 Spring Security和Shiro Spring Security 是Spring家族中的一个安全管理框架。 相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。 小项目有Shi…

ChatGPT:开放AI平台的最新进展和功能

第一章:引言 在过去的几年中,人工智能技术取得了长足的发展,其在各个领域的应用也日益广泛。而在AI技术中,自然语言处理(NLP)一直是备受关注的领域之一。ChatGPT作为OpenAI的开放AI平台上的一项重要技术&am…

【Duilib】通过xml文件布局界面

环境 VS版本:VS2013 概述 上一篇 【Duilib】入门 ,简单介绍了Duilib库的使用,这一篇测试一下通过xml布局界面。 步骤 1、创建工程 以 Win32\Win32项目 为模板创建TestByXml工程,步骤与上一篇基本一致。 2、创建MainWndFrame&a…

简单分享在微信上怎么实现分销功能

小程序分销开发怎么做?在如今的电商市场中,小程序分销成为了一种新兴的销售模式,通过分销模式,商家能够借助分销商的力量提高销售额,同时分销商也能不用投入大量资金和时间,就能在小程序上进行销售。那么&a…

FL Studio21中文版音频宿主软件下载教程

FL Studio是很适合新手上手的宿主软件,这得益于FL Studio独特的编曲逻辑。水果可以允许我们不使用音轨的思路来编曲。在FL Studio中我们创建一个pattern后,可以添加乐器或采样进去进行编写,编写完善后将Pattern拖进播放列表进行编排。不用区分…

高性能计算可以自学么?自学学完高性能计算能就业吗

随着超算互联网的认知越来越深,越来越多同学意识到高性能计算是未来有可能最好的就业方向之一。 高性能计算因其更偏底层、更不易被替代,因此广受广大大学生朋友和在职程序员的青睐。那么自学高性能计算可行吗?高性能计算可以自学吗&#xff…

2023年Java 毕业设计怎么选题,有哪些注意事项

个人简介:程序员徐师兄,7 年大厂程序员经历,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流! 各类成品java毕设 。javaweb,ssh,ssm,springboot等等项目框…

Microsoft Visual Studio × 出现错误,无去启动

Microsoft Visual Studio 出现错误,无去启动visual studio。 streamJsonRpc.RemotelnvocationException:cannot find service module info file ‘ldentitystorageservice.servicehub.service.json’ in ‘c:}ProgramFilesvicrosoft visual studio2022,Communitycommon7Servic…

【Java-15】反射知识总结

01_类的加载 类的加载过程类的加载时机 类的加载 当程序在运行后,第一次使用某个类的时候,会将此类的class文件读取到内存,并将此类的所有信息存储到一个Class对象中 说明:Class对象是指java.lang.Class类的对象,此类…

GaussDB WDR报告分析

标题 问题描述问题现象告警业务影响原因分析处理方法步骤 1步骤 2步骤 3步骤 4步骤 6步骤 7步骤 8步骤9步骤 10步骤 11步骤 12 问题描述 CPU使用率高。 问题现象 出现CPU使用率超过阈值,CPU使用率快速上涨或短时间持续较高水平等现象。 告警 CPU使用率告警。 …

去除小程序home按钮

前言:当我们未登录时,会跳转到登录页,但是这时候登录页左上角会有一个跳转到首页的按钮,但是,我们不希望出现这个回到首页的按钮 去除前: 去除后: 代码: onShow() {wx.hideHomeBut…

html5的drag属性实现拖放

70. html5的drag属性实现拖放 拖放&#xff08;Drag 和 Drop&#xff09;是很常见的特性。它指的是您抓取某物并拖入不同的位置。 拖放是 HTML5 标准的组成部分&#xff1a;任何元素都是可拖放的。 下面我们通过一个例子来实现拖放 <div id"drop" ondrop"…

快一起来看看好用的ai绘画以图生图教程有哪些吧

我朋友近期在研究ai绘画软件&#xff0c;想要用它创造出一些独特的艺术作品。所以他去查看了ai绘画软件排行榜&#xff0c;但是&#xff0c;里面有很多款不同类型的绘画软件&#xff0c;让人有点眼花缭乱。于是&#xff0c;他来问我ai绘画软件排行靠前的哪个好&#xff0c;我就…