mac电脑开发嵌入式基于Clion(stm32CubeMX)

mac电脑开发嵌入式基于Clion(stm32CubeMX)
电气学生在备赛时期,一定是要接触到入门的嵌入式开发,无论是电赛还是嵌赛,但是市面上大多教程都是基于keil来开发芯片,没mac版本,而B站的STM32课程会使用到STM32CubeIDE这一软件,但是作为一个软件开发者习惯了mac环境下idea,xcode这些优秀IDE,在用keil或者STM32CubeIDE(确实很方便好用,但是Clion会有更优的地方)的时候难免会有点不习惯,于是我在网上找了一些教程,找到了使用Clion来搭载单片机环境开发的方法

一、Clion下载

这个在本人第一篇mac系列博客中能找到,请移步一下看看,这里不进行赘述:

mac用户怎么把代码上传到Gitee(基于Clion)-ZEEKLOG博客

二、 STM32系列软件下载

1.STM32CubeMX 是 STMicroelectronics 提供的一款图形化配置工具,旨在帮助开发人员更高效地完成 STM32 微控制器的初始化和外设配置工作。能够大大提高我们对于单片机开发的效率,但只限于STM32系列芯片

 STM32CubeMX:https://www.st.com/zh/development-tools/stm32cubemx.html#get-software

这时我们还需要下载STM32Cube CLT:它包含了我们需要使用到的CMake、GCC、Ninja、STLink

STM32Cube CLT:https://www.st.com/en/development-tools/stm32cubeclt.html#get-software

三、ST-link下载

不安装的话检测不到stlink。

可能是我电脑的原因,下载完STM32Cube CLT后我的电脑还是检测不到ST-link,所以我们手动下载一个st-link就OK了

st-link官网下载:https://www.st.com/en/development-tools/st-link-server.html

brew install stlink # 插入stlink后以下命令应该能检测到该stlink st-info --probe 

四、Clion配置

这里大家可以自行选择,也可以去网上买一个激活码用完整版的

4.1 注册

之后需要登陆注册,有账号的登陆,没有的注册一个就行

注册好后我们重启Clion

4.2 新建项目

点击新建项目后大家可以发现:我们的Clion是支持直接创建STM32CubeMX项目的,点击STM32CubeMX我们可以看到,Clion自动会帮我们找到我们CubeMX与CubeCLT的位置

注意:如果Clion没有自动找到CubeMX与CubeCLT的位置,需要大家自己寻找一下,手动配置

4.3 启动STM32CubeMX配置准备

4.3.1 点击访问MCU选择器

4.3.2 选择芯片

4.4 可视初始化设置

4.4.1 Debuge模式

由于STM32系列芯片通常使用ST-link,所以我们要设置一下Debuge模式

4.4.2 点灯初始化配置

由于我是用b站一个up主自己画的STM32学习板,所以初始化配置大家仅供参考,只是教大家怎么使用这个方法的过程

将PA6设置为输出模式

右键给标签取个名字

4.4.3 配置Project Manager

生成代码后,会弹出这个弹窗,我们点击打开工程文件夹

4.4.4 把工程文件移到Clion里

这一步非常简单,我们刚才不是打开了工程所在的文件夹吗,把整个文件夹移到CLion这个图标上

点击信任此项目

这样,我们刚才配置的代码就移入Clion了

4.4.5 选择面板配置文件

根据自己型号选择

4.4.6 运行调试配置

随后重启,再重新把工程拖入Clion,这时候会出现配置设置

这里直接按确定就行

4.4.7 配置文件内容

# stm32f103c8t6 stlink-v2.cfg # 文件名可以随便取,放到 board 文件夹中方便在 CLion 中选择 # 使用 stlink-v2 调试器 source [find interface/stlink.cfg] # 使用 hla_swd 调试接口 transport select hla_swd # 目标芯片设定为 STM32F1 系列 source [find target/stm32f1x.cfg] # 不使用复位接口 reset_config none 

这个文件是一个 OpenOCD 配置文件,通常用于在嵌入式开发中连接调试器(如ST-Link)和目标芯片(如STM32F103C8T6),以便进行程序下载(烧录)和调试(比如单步、断点、查看变量等)。

下面我们逐行详细解释这个文件的内容,让你彻底明白它是干什么的、每句话是什么意思。


文件名说明
# stm32f103c8t6 stlink-v2.cfg # 文件名可以随便取,放到 board 文件夹中方便在 CLion 中选择
  • 这两行是注释,不会影响程序运行。
  • 第一行说明这个配置文件是为 STM32F103C8T6 芯片 + ST-Link V2 调试器 准备的。
  • 第二行说明:这个文件的名字可以自己起,但建议放到 OpenOCD 的 board/ 目录下,这样在 IDE(如 CLion + PlatformIO 或 STM32CubeIDE)中可以选择它。
✅ 小知识:OpenOCD 是一个开源的调试工具,支持 JTAG/SWD 接口,用来和 STM32 等 MCU 通信。
第一行:指定调试器接口
source [find interface/stlink.cfg]
  • 作用:告诉 OpenOCD 使用哪种调试器(这里是 ST-Link V2)。
  • source 是 Tcl 脚本语言中的“包含”命令,意思是“加载另一个配置文件”。
  • [find interface/stlink.cfg] 表示在 OpenOCD 安装目录中查找 interface/stlink.cfg 这个文件。

📌 这个 stlink.cfg 文件里定义了:

  • 使用的是 ST-Link 调试器
  • 通信方式是 SWD 或 JTAG
  • USB 识别信息等
💡 举个例子:这就像是你告诉电脑“我要用鼠标”,然后系统加载鼠标驱动。

 第二行:选择传输方式(调试接口类型)
transport select hla_swd
  • 作用:选择调试通信协议,这里使用 SWD 模式(Serial Wire Debug)。
  • hla_swd 中的 hla 是 "High Level Adapter" 的缩写,表示兼容 ST-Link、J-Link 等通用调试器的抽象层。
  • STM32 支持两种主要调试接口:
    • JTAG:引脚多,功能强
    • SWD:只需要 2 根线(SWCLK 和 SWDIO),更常用,推荐使用
✅ 所以这行的意思是:“我用的是 ST-Link,走 SWD 协议来和芯片通信”。

第三行:指定目标芯片
source [find target/stm32f1x.cfg]
  • 作用:告诉 OpenOCD 当前要调试的芯片是 STM32F1 系列(比如你用的 STM32F103C8T6 就属于这个系列)。
  • target/stm32f1x.cfg 是 OpenOCD 内置的一个配置文件,里面包含了:
    • STM32F1 系列的内存布局(Flash、RAM 地址)
    • 如何复位芯片
    • Flash 编程算法
    • 内核类型(Cortex-M3)
💡 这相当于告诉调试器:“我现在要控制的是一个 STM32F1 的芯片,它内部是怎么工作的我知道”。

 第四行:配置复位方式
reset_config none
  • 作用:设置芯片的复位引脚(NRST)如何处理。
  • none 表示:不使用外部复位信号,也就是你的 ST-Link 没有接目标板的 NRST 引脚。

📌 常见选项:

  • reset_config none:不使用复位线,只靠软件复位。
  • reset_config srst_only:只使用系统复位(SRST),即 NRST 引脚。
  • reset_config srst_nogate:允许复位但不“屏蔽”其他操作。
⚠️ 如果你把 ST-Link 的 NRST 引脚接到 STM32 的复位脚上,可以改成 reset_config srst_only,这样调试器能更可靠地重启芯片。

 举个生活化的比喻

想象你要控制一台机器人(STM32芯片):

比喻实际对应
你用的遥控器ST-Link 调试器
遥控器用蓝牙连接SWD 通信协议
机器人型号是“机械臂V1”STM32F1 系列
你写了一份说明书给电脑这个 .cfg 配置文件
说明书告诉电脑怎么连遥控器、怎么发指令OpenOCD 读取配置,建立连接

这个配置文件就是这份“说明书”。

4.4.8 调试及烧录

代码写好后,再把我上面的配置文件内容复制到自己的配置文件里

点击小三角

即可烧录完成


由于笔者暑假放假回家,身边没有单片机,所以实践的内容等到开学后更新

Read more

HarmonyOS6半年磨一剑 - RcImage组件核心架构与状态管理机制

HarmonyOS6半年磨一剑 - RcImage组件核心架构与状态管理机制

文章目录 * 前言 * 项目简介 * 核心特性 * 开源计划 * rchoui官网 * 第一章: 组件架构设计 * 1.1 ComponentV2 装饰器体系 * 1.2 参数系统分层设计 * 1.3 类型系统设计 * 第二章: 状态管理机制 * 2.1 加载状态机设计 * 2.2 状态转换逻辑实现 * 2.3 预览状态管理 * 第三章: 生命周期管理 * 3.1 组件生命周期钩子 * 3.2 状态更新触发机制 * 第四章: 事件系统设计 * 4.1 事件分类与职责 * 4.2 事件触发时机与顺序 * 4.3 事件参数设计 * 第五章: 渲染优化策略

By Ne0inhk

Flutter 三方库 drift_postgres 的鸿蒙化适配指南 - 实现高效、稳定的远程 PostgreSQL 数据库接入

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 drift_postgres 的鸿蒙化适配指南 - 实现高效、稳定的远程 PostgreSQL 数据库接入 在 OpenHarmony 应用开发中,处理复杂的数据持久化需求是架构设计的重中之重。除了本地 SQL 数据库外,直接连接远程 PostgreSQL 数据库也成为许多工业级应用的刚需。本文将深入探讨 drift_postgres 在鸿蒙系统上的适配实战,助力开发者构建强大的数据驱动应用。 前言 drift 是 Flutter 生态中最受欢迎的响应式持久化框架。而 drift_postgres 做为它的重要后端实现,使得我们可以在鸿蒙端直接操作远端数据库,就像操作本地 sqlite 一样丝滑。在鸿蒙设备(如平板或工业手持终端)需要与中央数据库实时同步的高频场景下,其价值不可估量。 一、原理分析 / 概念介绍

By Ne0inhk
构建AI临床副驾驶:基于Go的电子病历智能助手与HIS对接实战(上)

构建AI临床副驾驶:基于Go的电子病历智能助手与HIS对接实战(上)

摘要 本文旨在为医疗信息化开发者提供一套可落地的“AI临床副驾驶”设计方案,通过Go语言构建一个轻量、高效的中间层服务,与医院现有的HIS/EMR系统无缝对接。我们聚焦于三个典型智能场景——复诊记忆延伸、首诊导航提醒、病历质控与术语规范,展示如何在不侵入原有系统的情况下,为医生提供实时、精准的辅助决策信息。文章涵盖总体架构设计、多种HIS对接方式(REST/HL7/FHIR/DB视图)、接口契约定义、关键业务流程、完整的Go代码骨架,以及安全合规、部署运维等实践要点。所有代码均基于生产环境经验提炼,可作为项目直接启动的参考原型。 目录 1. 引言:电子病历的“副驾驶”时代 2. 总体架构:Go中间层 + HIS主系统 1. 设计原则 2. 组件划分

By Ne0inhk