【CLion】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能

使用的CLion版本:2023.3.1

  •  CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com)

  • OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com)

  • GNU ARM工具链:Arm GNU Toolchain Downloads – Arm Developer

1.配置开发环境

下载OpenOCDGNU ARM工具链

将这个两个压缩包下载完进行解压,我解压到CLion的安装目录下,方便查找 

注意!文件路径不要出现中文或者空格

配置环境变量:

将两个工具的bin目录添加到环境变量中

验证环境:

arm-none-eabi-gcc -v

 2.使用CubeMX创建工程

 安装STM32CubeMX教程:CubeMX安装

第一个任务当然是点个灯啦~ 

电路如下: 

配置下载方式:

配置时钟:

配置GPIO:

配置输出文件:

3.配置CLion

将新建的工程使用CLion打开

第一次启动会弹出设置面板文件的选项,可以选择一个相近的型号,比如我的是STM32F103RCT6可以选择这个STM32f103c8_blue_pill.cfg 这个配置文件,然后点击Copy to Project & Use。

也可以点击Skip跳过,这里我选择的是Skip跳过,后面再编写cfg配置文件!

新建一个配置文件,名为 stlink.cfg 这个配置文件主要是为了后续的程序烧录下载。

stlink.cfg: 

# choose st-link/j-link/dap-link etc.
# adapter driver cmsis-dap
# transport select swdsource [find interface/stlink.cfg]transport select hla_swdsource [find target/stm32f1x.cfg]
# download speed = 10MHzadapter speed 10000000

设置cfg配置文件:

配置系统设置:

4.编写代码

编译代码,并烧录代码~

      HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);HAL_Delay(500);HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);HAL_Delay(500);

5.调试代码

调试代码需要新建一个配置文件 Embedded GDB Server

选择调试的配置文件,我们会发现只剩下一个调试按钮。

6.添加自定义文件

在编写STM32的时候,我们不单单只在main.c中编写,也想编写属于自己外设的文件!

新建存放自定义文件的文件夹USER

里面包含Inc存放头文件.h,Src存放源文件.c

这时候我们只需要设置,让CmakeLists.txt 告诉工程去找USER文件夹这个路径

include_directories 中添加文件夹路径

另外是在file中添加相关文件,这里我主要是模仿前面的CoreDrivers去编写的。 

这时候只需重新刷新下Cmake即可!然后再重新编译即可!

7.配置其他

当我们编写一部分代码后,想要使用CubeMX去配置其他管脚IO时

只需点击.ioc 文件即可跳入STM32 CubeMX 配置界面

注意:需要在setting中正确配置CubeMX的路径!

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

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

相关文章

大话前端:WebAssembly的未来与前端开发

大话前端:WebAssembly的未来与前端开发 引言 近年来,WebAssembly(简称Wasm)作为一种新兴的网络技术,正在逐步改变前端开发的格局。作为一种低级的类汇编语言,它允许代码以接近原生的速度运行,…

lv12 linux 内核移植 10

目录 1 内核概述 1.1 内核与操作系统 1.2 Linux层次结构 1.3 Linux内核特点 2 Linux内核源码结构 2.1 Linux内核源码获取 2.2 源码结构 3 Linux内核移植 3.1 在 Linux 官网下载 Linux 内核源码(这里我们下载 linux-3.14.tar.xz) 3.2 拷贝内核源…

React中对UI组件化的步骤和设计原理

在 React 中,对 UI 进行组件化是一个将复杂界面拆分成更小、独立和可复用部分的过程。这种方法有助于提高应用的可维护性、可测试性,并且可以提升开发效率。下面是 React 中对 UI 组件化的步骤和设计原理的详细解释: 步骤一:识别…

uniapp组件和周期的知识点以及怎么使用

UniApp是一个使用Vue.js开发跨平台应用的框架,它可以将代码编译成微信小程序、支付宝小程序、H5、App等多个平台的应用。在UniApp中,组件是构建应用界面的基本单位,而生命周期则是组件在实例化、挂载、更新和销毁过程中的一系列方法。 以下是…

【Spark-ML源码解析】Word2Vec

前言 在阅读源码之前,需要了解Spark机器学习Pipline的概念。 相关阅读:SparkMLlib之Pipeline介绍及其应用 这里比较核心的两个概念是:Transformer和Estimator。 Transformer包括特征转换和学习后的模型两种情况,用来将一个DataFr…

Unity触摸 射线穿透UI解决

unity API 之EventSystem.current.IsPointerOverGameObject() 命名空间 :UnityEngine.EventSystems 官方描述: public bool IsPointerOverGameObject(); public bool IsPointerOverGameObject(int pointerId); //触摸屏时需要的参数&#xff…

支持向量机 支持向量机概述

支持向量机概述 支持向量机 Support Vector MachineSVM ) 是一类按监督学习 ( supervisedlearning)方式对数据进行二元分类的广义线性分类器 (generalized linear classifier) ,其决策边界是对学习样本求解的最大边距超亚面 (maximum-margin hyperplane)与逻辑回归和…

Unity | Shader基础知识(第七集:案例<让图片和外部颜色叠加显示>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、添加图片资源 三、 常用cg数据类型 1 float 2 bool 3 sampler 四、加入图片资源 五、使用图片资源 1 在通道里加入资源 2 使用图片和颜色叠加 2.1 2D纹理采样tex2D 2.2 组合颜色 六、全部代码 七、下集介绍 相关…

26 redis 中 replication/cluster 集群中的主从复制

前言 我们这里首先来看 redis 这边实现比较复杂的 replication集群模式 我们这里主要关注的是 redis 这边的主从同步的相关实现 这边相对比较简单, 我们直接基于 cluster集群模式 进行调试 主从命令同步复制 比如这里 master 是 redis_7002, slave 是 redis_7005 然后 这…

11.HarmonyOS鸿蒙app_page的显示跳转方法

11.HarmonyOS鸿蒙app_page的显示跳转方法&#xff0c;text文本触发点击事件 使用Intent和Operation对象 创建新项目后&#xff0c;再创建secondPageAbility ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:…

LeetCode(65)LRU 缓存【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; LRU 缓存 1.题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 k…

【ArkTS】路由传参

传参 使用router.pushUrl()&#xff0c;router.push()官方不推荐再使用了。 格式&#xff1a; router.pushUrl({url: 路由地址,params:{参数名&#xff1a;值} )跳转时需要注意路由表中是否包含路由地址。 路由表路径&#xff1a; entry > src > main > resources &g…

C#动态加载第三方非托管DLL,LoadLibraryEx,LoadLibrary

C#动态加载第三方DLL 当我们需要加载第三方非托管DLL时&#xff0c;通常会直接使用DllImport的方式&#xff0c;代码如下&#xff1a; [DllImport("GetFile.dll", CallingConvention CallingConvention.StdCall, CharSet CharSet.Unicode)] static extern string…

【华为OD题库-095】字符串划分-Java

题目 给定一个小写字母组成的字符串S&#xff0c;请找出字符串中两个不同位置的字符作为分割点&#xff0c;使得字符串分成三个连续子串且子串权重相等&#xff0c;注意子串不包含分割点。 若能找到满足条件的两个分割点&#xff0c;请输出这两个分割点在字符串中的位置下标&am…

Python+pip下载与安装

Hi, I’m Shendi Pythonpip下载与安装 最近有识别图片中物体的需求&#xff0c;于是选用了TensorFlow&#xff0c;在一番考虑下&#xff0c;还是选择直接使用Python。 Python下载安装 直接在搜索引擎搜索Python或通过 https://www.python.org 进入官网 在 Downloads 处点击 Al…

Gin之GORM的表关联查询操作详解

前期工作&#xff1a; 先查看下要操作的两张表&#xff1a; carton carton_cate //关系如下&#xff1a; // 一个章节对应一个动漫&#xff08;一对一&#xff1b;两种方法&#xff1a;belong to&#xff1b;has one&#xff09; // 一个动漫可以对应多个章节&#xff08;一…

Flink-状态后端

状态后端是一个“开箱即用”的组件&#xff0c;可以在不改变应用程序逻辑的情况下独立配置。 Flink中提供了两类不同的状态后端&#xff0c;一种是“哈希表状态后端”&#xff08;HashMapStateBackend&#xff09;&#xff0c;另一种是“内嵌RocksDB状态后端”&#xff08;Embe…

42道CSS高频题整理(附答案背诵版)

1、简述CSS3选择器优先级及计算&#xff1f; CSS的选择器优先级是一个相对复杂的概念&#xff0c;它规定了在一组样式冲突时&#xff0c;哪些样式将被浏览器采纳。选择器优先级是通过一个四位的值来计算的&#xff0c;形式为&#xff1a;[内联样式, ID选择器, 类选择器/属性选…

Eclipse_01_如何设置代码文件背景颜色为护眼沙绿色

设置方法 Window --> Preference 参考文档 参考文档 1

uni-app ucharts中饼图与圆环图区别

项目情况&#xff1a; uni-app的用于移动端H5项目&#xff0c;包使用uni_modules目录存放。 图表引用ucharts中的echarts配置的组件方式 区别1 饼图与圆环图在echarts使用的配置都是pie类型。但是配置raduis使用&#xff1a; radius: [40%, 70%] 区别2 组件type指明&#xf…