CLion社区免费后,使用CLion开发STM32相关工具资源汇总与入门教程

Clion下载与配置

Clion推出社区免费,就是需要注册一个账号使用,大家就不用去找破解版版本了,jetbrains家的IDEA用过的都说好,这里嵌入式领域也推荐使用。
在这里插入图片描述
CLion官网下载地址
安装没有什么特别,下一步就好。
启动登录账号,选择社区免费即可。
创建一个项目,这里选择STM32CubeMX选项,如下图
在这里插入图片描述
这里需要3个工具依赖,地址都放好了,方便大家下载。
Stm32CLT下载
Stm32CubeMX下载
OpenOCD下载
下载完成后,选择相应路径就好了。
根据CLion给的注释可以很容易的创建一个项目。
在这里插入图片描述
注意项目路径和项目名称要保持一致。
这里我是用一个串口调试工程来验证。
开启SW调试:
在这里插入图片描述

开启串口:
在这里插入图片描述
这里加入printf重定向代码,方便后面打印

#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printfset to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ *//*** @brief  Retargets the C library printf function to the USART.* @param  None* @retval None*/
PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);return ch;
}

时钟配置:
在这里插入图片描述
生成代码:
在这里插入图片描述

编译与运行

项目创建完成后,需要进行下一步的配置,这里配置不复杂。
这里先配置CMake相关。
在这里插入图片描述
选择Debug和Release都启用。
在这里插入图片描述
点击Build按钮,进行编译在这里插入图片描述
在这里插入图片描述
编译成功后,如何下载呢,这里需要配置OpenOCD,这里我使用的是STLink下载器,其他的也都类似。打开配置页
在这里插入图片描述
新建一个OpenOCD的配置项,这一步是为了配置下载器相关的参数
在这里插入图片描述

在这里插入图片描述
点辅助可以读取预设的模板文件,这里我用的stm32h743,所以我选择一个近似的cfg文件,复制到项目中。
在这里插入图片描述
文件内容:
把最后一行删除,重启这里有点问题
在这里插入图片描述
这时选择选择新建的OCD配置项,点击绿色运行按钮即可下载。
在这里插入图片描述
下载完成
在这里插入图片描述

Debug模式

调试模式下,是用debug按钮,进入断点调试,
在这里插入图片描述
这里可以查看调用栈,变量等信息。
在这里插入图片描述
外设这里也可以看到每一个寄存器的信息,很方便。
在这里插入图片描述第一次打开,由于没有关联SVD文件,会提示你加载一下SVD文件,这里找到STM32CubeCLT_1.18.0的安装目录,然后找到MCU对应的SVD文件即可。
在这里插入图片描述

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

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

相关文章

Rust 学习笔记:关于 Cargo 的练习题

Rust 学习笔记:关于 Cargo 的练习题 Rust 学习笔记:关于 Cargo 的练习题问题一问题二问题三问题四问题五问题六问题七 Rust 学习笔记:关于 Cargo 的练习题 参考视频: https://www.bilibili.com/video/BV1xjAaeAEUzhttps://www.b…

高速收发器

一、高速收发器 1.FPGA高速收发器:GTP,GTX,GTH,GTZ 2.每个Quad有4对高速收发器GT(4个TX和4个RX)和一个COmmon 3.走差分,提高抗干扰性 4.CPLL是每个lane私有的,QPLL是整个Quad的所有通道共享的 5.每个MGT的bank有两对差分参考时钟 6.CPLL的时钟…

Rust 变量与可变性

文章目录 变量与可变性常量遮蔽(Shadowing) 变量与可变性 Rust中变量默认是不可变的,这是 Rust 鼓励你编写更安全、易于并发代码的众多方式之一。不过,你仍然可以选择让变量可变。让我们来探讨 Rust 为什么鼓励你优先使用不可变性…

sourcetree无法获取远程所有的tag

2025年5月29日11:30:17 sourcetree widnwos v3.4.23版本 突然发现线上的代码库里有很多新打的tag,但是sourcetree死活无法拉去所有的tag,尝试卸载重新安装也不行,全网也找了还是不知道,但是mac版本好像没有这个问题 方法1&…

《深度探索C++对象模型》阅读笔记(完整版)

《深度探索C对象模型》阅读笔记(完整版) 文章目录 《深度探索C对象模型》阅读笔记(完整版)1. 关于对象(Object Lessons)1.1 C对象模型(The C Object Model)1.1.1 语言中的对象模型1.…

从Docker拉取镜像一直失败超时解决办法

项目场景: 在ubuntu中,使用docker拉去镜像时,一直超时,拉去失败。 问题描述 原因分析: 国外服务器网络不好导致。 解决方案: 解决方案1 设置国内源 我这边测试,更改以后仍然失败 阿里云提供…

KONG根据请求参数限流

背景 价格接口 /search 同时支持缓存查价和实时查价,主要通过searchType字段区分这两种请求。 searchType 为空时为缓存查价,QPS很高。searchType 不为空时为实时查价,但QPS远低于普通查价。 如果直接对该接口限流,当流量波动超…

通俗易懂解析:@ComponentScan 与 @MapperScan 的异同与用法

在 Spring 和 MyBatis 集成开发中,ComponentScan 和 MapperScan 是两个核心注解,但它们的用途和工作机制截然不同。本文将通过通俗的语言和示例代码,带您轻松掌握它们的区别和使用方法。 一、基础概念 ComponentScan:Spring 的“通…

39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法)

39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法) 一、异步业务函数解析 1.1 页面导航函数 async def get(async_driver, url: str http://secure.smartbearsoftware.com/samples/testcomplete12/WebOrders/Login.aspx):await…

Qt 无边框窗口实现拖动与窗口控制(最小化/最大化/关闭)

在 Qt 中,使用 Qt::FramelessWindowHint 可以创建无边框窗口,但这样会导致窗口无法拖动,并且系统默认的标题栏按钮(最小化、最大化、关闭)也会消失。本文将介绍如何实现无边框窗口的鼠标拖动功能,并添加自定…

Linux中的System V通信标准-共享内存、消息队列以及信号量

在Linux系统中,System V IPC(Inter-Process Communication)提供了一系列进程间通信的机制,包括共享内存、消息队列和信号量。这些机制在系统中发挥了重要作用,帮助进程之间进行数据交换和同步。本文将详细介绍这些机制…

postman工具使用

基本功能操作 常用断言 定义:postman 断言借助 JavaScript - js 语言编写代码,自动判断预期结果与实际结果是否一致。( 注意断言 代码写在 Tests 的标签中) 断言响应状态码 断言响应体是否包含某个字符串(Response bo…

VBA数据库解决方案二十:Select表达式From区域Where条件Order by

《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

算法-集合的使用

1、set常用操作 set<int> q; //以int型为例 默认按键值升序 set<int,greater<int>> p; //降序排列 int x; q.insert(x); //将x插入q中 q.erase(x); //删除q中的x元素,返回0或1,0表示set中不存在x q.clear(); //清空q q.empty(); //判断q是否为空&a…

C++文件和流基础

C文件和流基础 1. C文件和流基础1.1 文件和流的概念1.2 标准库支持1.3 常用文件流类ifstream 类ofstream 类fstream 类 2.1 打开文件使用构造函数打开文件使用 open() 成员函数打开文件打开文件的模式标志 2.2 关闭文件使用 close() 成员函数关闭文件关闭文件的重要性 3.1 写入…

Maven---配置本地仓库

目录 5. 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5.3 找到配置文件路径&#xff0c;使用VSCode方式打开 5.4 新增一行代码 5.5 复制本地仓库路径&#xff0c;设置存储路径 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5…

Vue3 + Element Plus + TypeScript 中 el-cascader 实现模拟用户点击功能

模拟点击&#xff0c;调用 el-cascader 的公开方法 togglePopperVisible 来展开下拉框 MaterialOut.vue <script setup lang"ts" name"MaterialOut"> ...... import { ElMessage, type ElCascader } from "element-plus";// 级联组件实例…

新能源汽车与油车销量

中国油车与新能源车销量对比&#xff08;2022-2025年&#xff09; ‌1. 市场份额演化&#xff08;2022-2025年&#xff09;‌ ‌年份‌ ‌新能源车销量 &#xff08;渗透率&#xff09;‌ ‌燃油车销量 &#xff08;渗透率&#xff09;‌ ‌关键事件‌ ‌2022‌ 688.7万辆…

C++ list代码练习、set基础概念、set对象创建、set大小操作

对应力扣&#xff0c;回文链表&#xff0c;代码见下 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, …

前端面试宝典---前端水印

明水印 1. 背景图 通过css的background-image加载背景图 2. canvasbackground水印 前端水印实现思路与示例代码 一、核心实现思路 Canvas动态生成水印 通过Canvas绘制文本或图案&#xff0c;将生成的图像转为Base64格式&#xff0c;作为背景图重复平铺到目标元素上。例如&…