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

发布于:2025-08-18 ⋅ 阅读:(10) ⋅ 点赞:(0)

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

一、Clion下载

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

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

二、 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 调试及烧录

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

点击小三角

即可烧录完成


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


网站公告

今日签到

点亮在社区的每一天
去签到