跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C

Mac 平台使用 CLion 配置 STM32 开发环境实战

Mac 平台 STM32 开发环境搭建方案,采用 CLion 集成 IDE 搭配 STM32CubeMX 图形化配置及 OpenOCD 调试器。通过 Homebrew 安装 ARM 工具链,配置 GDB 服务器与编译器路径。以 STM32F103ZE 为例演示 LED 点亮流程,涵盖时钟树设置、GPIO 初始化及 OpenOCD 连接调试细节。解决 ST-Link 识别失败、GDB 速度匹配等常见问题,实现跨平台嵌入式高效开发。

DockerOne发布于 2026/2/12更新于 2026/6/1220 浏览

Mac 平台使用 CLion 高效开发 STM32:从零搭建现代化嵌入式环境

对于习惯 macOS 环境的开发者,每次为了 STM32 开发切回 Windows 用 Keil,往往面临界面陈旧、调试割裂、跨平台协作麻烦等问题。经过反复验证,CLion + STM32CubeMX + OpenOCD 这个组合不仅完全可行,而且体验出乎意料地好。代码自动补全精准,GDB 调试丝滑,寄存器可视化清晰,还能一键生成初始化代码。

以下记录完整的搭建流程,重点解决常见坑点,确保你少走弯路。

环境准备与工具链安装

整个流程的核心在于打通四个关键组件:

  • CLion:提供现代化编辑体验
  • STM32CubeMX:图形化配置时钟、外设、引脚
  • arm-none-eabi-gcc:交叉编译器,负责把 C 代码编译成 ARM 指令
  • OpenOCD:作为 GDB Server,实现程序烧录与在线调试

⚠️ 注意:本文所有操作均基于 macOS Catalina 及以上系统实测有效。路径、命令可能不适用于 Windows 或 Linux。

安装 CLion 并启用嵌入式支持

前往 JetBrains 官网下载最新版 CLion,版本建议不低于 2019.2,否则可能缺少对嵌入式插件的完整支持。

安装后启动,进入 Preferences → Plugins,搜索关键词 Embedded Development,确保已安装并启用。这个插件至关重要——它让 CLion 支持 OpenOCD、GDB 调试会话、外设寄存器视图等功能。没有它,后续的调试环节将寸步难行。

使用 Homebrew 安装 ARM 交叉编译工具链

Mac 下最省事的方式就是通过 Homebrew 安装官方推荐的 GNU Arm Embedded Toolchain:

brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

安装完成后验证是否成功:

arm-none-eabi-gcc --version

正常输出应类似:

arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors) 10.2.1 ...

如果提示命令未找到,请检查你的 shell PATH 是否包含 /usr/local/bin,或者尝试重启终端。

安装 OpenOCD:连接 PC 与芯片的桥梁

OpenOCD 是整个调试链的核心。它负责通过 ST-Link 等调试器与目标板通信,接收 GDB 指令并执行烧录、断点、单步等操作。

继续使用 Homebrew 安装:

brew install open-ocd

验证版本:

openocd --version

输出示例如下即表示成功:

Open On-Chip Debugger 0.11.0

后续若遇到无法识别调试器的问题,可以手动测试 OpenOCD 是否能探测到设备:

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg

若看到 Info : stm32f1x.cpu: hardware has 6 breakpoints... 则说明连接正常。

安装 STM32CubeMX:可视化配置神器

ST 官方的 STM32CubeMX 是不可或缺的辅助工具。虽然它是 .exe 文件,但在 Mac 上仍可通过 Java 运行。

前往官网下载,需要注册账号并填写信息后才能下载。下载完成后解压,你会看到一个 .exe 格式的安装包(如 SetupSTM32CubeMX-5.6.0.exe)。

接下来用 Java 命令行运行安装程序:

sudo java -jar ~/Downloads/en.stm32cubemx_v5.6.0/SetupSTM32CubeMX-5.6.0.exe

注意替换为你的实际路径。安装向导会弹出,按提示完成即可。默认会安装到 /Applications/STM32CubeMX.app。

📌 提醒:必须提前安装 JDK 或 JRE(版本 ≥ 8),否则无法启动。可以用 java -version 检查。

CLion 工具链配置:打通最后一环

打开 CLion,进入 Preferences → Build, Execution, Deployment → Toolchains,新建一个名为 ARM Embedded 的工具链,配置如下:

字段值
NameARM Embedded
TypeGCC
Environment默认
Target EnvironmentBare Metal
C Compiler/usr/local/bin/arm-none-eabi-gcc
C++ Compiler/usr/local/bin/arm-none-eabi-g++
Debugger/usr/local/bin/arm-none-eabi-gdb

⚠️ 关键点:不要使用 CLion 自带的 Bundled GDB,它通常无法正确处理裸机环境下的符号解析。务必指定 arm-none-eabi-gdb。

接着切换到 Embedded Development 设置页:

  • GDB Server: OpenOCD
  • OpenOCD Path: /usr/local/bin/openocd
  • STM32CubeMX Path: /Applications/STM32CubeMX.app

点击 'Test' 按钮逐一验证各组件是否可用。无报错即表示配置成功。

创建第一个工程:点亮 LED

以正点原子精英版开发板(MCU: STM32F103ZE)为例,演示如何创建并运行一个简单的 GPIO 控制项目。

新建 STM32 项目

在 CLion 欢迎界面选择:

New Project → STM32 Project

填写项目名称和路径,点击 Create。

此时项目中只有一个 .ioc 配置文件(如 led.ioc)。右键该文件 → Open with STM32CubeMX,会自动拉起 STM32CubeMX。

更换为目标 MCU 型号

默认 MCU 是 STM32F030F4Px,需更换为实际使用的型号:

  1. 点击左上角 Access to MCU Selector
  2. 搜索 STM32F103ZE,选中并确认

配置系统核心功能

SYS:启用 Serial Wire 调试

路径:System Core → SYS

设置:Debug: Serial Wire

这是关键!启用 SWD 接口后,后续下载程序无需复位,支持真正的热加载调试。

RCC:启用外部晶振

路径:System Core → RCC

设置:High Speed Clock (HSE): Crystal/Ceramic Resonator

大多数开发板都有 8MHz 外部晶振,这里要明确启用,否则时钟树计算会出错。

配置时钟树(Clock Configuration)

顶部切换至 Clock Configuration 标签页。

将 HCLK (MHz) 设置为 72 MHz(STM32F1 系列最大主频)。

弹窗提示是否同步调整其他时钟?点击 Yes 即可。这一步由 PLL 倍频实现,确保性能最大化。

配置 GPIO 引脚

根据正点原子原理图,LED0 接在 PB5 上。

在芯片引脚图中找到 PB5,点击设置为:

  • Mode: GPIO_Output
  • Label: LED_PIN

Label 会在生成代码时作为宏定义使用,方便后续编程引用。

生成初始化代码

切换到 Project Manager 页面,进行以下设置:

项目设置
Project NameBlink_LED
Toolchain / IDESW4STM32 (Atollic TrueSTUDIO) ❗ 必须选此项
Code GeneratorCopy only changed files
Advanced Settings勾选'Generate peripheral initialization as a pair of'.c/.h'files per peripheral'

点击 Generate Code,生成代码到项目目录。

关闭 CubeMX,返回 CLion,你会发现 Src 和 Inc 目录已被填充。

配置调试接口文件

CLion 会弹出提示:'No board config file selected'。

点击 Select Board Config File,选择预设配置:

st_nucleo_f103rb.cfg → Copy to Project & Use

该文件位于 OpenOCD 安装目录下的 target 子目录中,定义了如何连接目标芯片。但我们需要根据实际情况修改它。

修改 OpenOCD 配置以适配 ST-Link V2

编辑项目根目录下的 st_nucleo_f103rb.cfg 文件。

原始内容可能是:

source [find interface/stlink-v2-1.cfg]

改为:

source [find interface/stlink-v2.cfg]

完整配置如下:

source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
reset_config srst_only

解释一下这几个指令的作用:

  • stlink-v2.cfg:适配最常见的 ST-Link V2 下载器(非 V2-1)
  • transport select hla_swd:启用 SWD 模式传输(HAL-based SWD)
  • target/stm32f1x.cfg:对应 STM32F1 系列芯片的调试配置
  • reset_config srst_only:仅使用复位引脚重启设备,避免误触发 nRST 问题

编写主函数逻辑

打开 Src/main.c,在 while(1) 循环前添加初始化语句:

/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET); // 拉低电平点亮 LED
/* USER CODE END 2 */

也可以在循环内实现闪烁效果:

/* USER CODE BEGIN WHILE */
while (1) {
    HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
    HAL_Delay(500); // 延时 500ms
}
/* USER CODE END WHILE */

注意:LED_PIN_GPIO_Port 和 LED_PIN_Pin 是 CubeMX 自动生成的宏,具体值取决于你在 GUI 中设置的 Label 名称。

编译、下载与首次调试

准备工作就绪,现在开始第一次烧录。

  1. 将 ST-Link V2 连接到电脑和开发板;
  2. 板子供电正常(可通过 USB 或外部电源);
  3. 在 CLion 中点击 ▶ Run 按钮。

首次运行常见问题:OpenOCD 初始化失败

控制台可能出现错误:

** OpenOCD init failed **

这是因为某些 ST-Link 固件或电路设计导致 OpenOCD 无法在芯片运行状态下建立连接。

✅ 解决方法:

  • 按住开发板上的 RESET 键不放
  • 点击 CLion 的 Run 按钮
  • 观察日志输出,直到出现:
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

立即松开复位键。

几秒后显示:

** Programming Finished **

说明程序已成功写入 Flash!此时 LED 应开始闪烁。

📌 实测经验:此操作仅需一次。只要你在 CubeMX 中正确启用了 Serial Wire 调试模式,后续就可以免复位直接下载调试,真正实现'所改即所得'。

常见问题排查指南

Q1:OpenOCD 找不到 ST-Link?

检查物理连接是否可靠,运行:

ls /dev/cu.* | grep -i stlink

如果没有输出,说明系统未识别设备。尝试重新插拔、更换数据线,或检查 ST-Link 是否损坏。也可直接运行 OpenOCD 测试:

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg

观察是否有设备枚举信息。

Q2:GDB 报错'Unable to match requested speed'?

这是 OpenOCD 与调试器通信速率不兼容的典型问题。

解决方案是在 .cfg 文件中显式降低适配速度:

adapter speed 1000

添加到 stlink-v2.cfg 引用之后即可,单位为 kHz。对于老旧或信号质量差的 ST-Link,建议设为 500 或更低。

Q3:CLion 不识别 .ioc 文件?

确保已在 Preferences 中正确设置了 STM32CubeMX 的安装路径(.app 包路径)。有时需要重启 CLion 才能生效。另外确认 .ioc 文件是否被正确关联,右键菜单应有'Open with STM32CubeMX'选项。

示例工程开源地址

已完成的完整工程已上传 GitHub,包含目录结构、配置文件与可运行代码:

https://github.com/example/stm32-clion-mac-example

欢迎克隆参考,快速上手。

后续探索方向

这套工具链稳定运行后,我计划进一步拓展能力边界:

  • UART 串口通信:实现 printf 重定向到串口,用于调试日志输出
  • FreeRTOS 移植:在 CLion 中构建多任务调度系统
  • SPI/I2C 驱动开发:驱动 OLED 屏幕、温湿度传感器等常见外设
  • CMake 构建优化:摆脱 CubeMX 生成的 Makefile,使用 CMake 实现更灵活的构建流程

这些都会在未来逐步实践并分享。

这种高度集成、现代化的开发方式,正在悄然改变嵌入式工程师的工作流。当你能在熟悉的 macOS 环境下享受智能补全、语法高亮、Git 集成、远程部署于一体的开发体验时,就会发现:硬件编程,其实也可以很优雅。

目录

  1. Mac 平台使用 CLion 高效开发 STM32:从零搭建现代化嵌入式环境
  2. 环境准备与工具链安装
  3. 安装 CLion 并启用嵌入式支持
  4. 使用 Homebrew 安装 ARM 交叉编译工具链
  5. 安装 OpenOCD:连接 PC 与芯片的桥梁
  6. 安装 STM32CubeMX:可视化配置神器
  7. CLion 工具链配置:打通最后一环
  8. 创建第一个工程:点亮 LED
  9. 新建 STM32 项目
  10. 更换为目标 MCU 型号
  11. 配置系统核心功能
  12. SYS:启用 Serial Wire 调试
  13. RCC:启用外部晶振
  14. 配置时钟树(Clock Configuration)
  15. 配置 GPIO 引脚
  16. 生成初始化代码
  17. 配置调试接口文件
  18. 修改 OpenOCD 配置以适配 ST-Link V2
  19. 编写主函数逻辑
  20. 编译、下载与首次调试
  21. 首次运行常见问题:OpenOCD 初始化失败
  22. 常见问题排查指南
  23. Q1:OpenOCD 找不到 ST-Link?
  24. Q2:GDB 报错“Unable to match requested speed”?
  25. Q3:CLion 不识别 .ioc 文件?
  26. 示例工程开源地址
  27. 后续探索方向
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 理解 Linux 内存分配:malloc、brk、mmap 关系及 overcommit 参数
  • 通过 27 个实战挑战精通 Vue.js
  • CMake 跨平台安装指南:Windows、Linux 与 macOS 配置详解
  • GitHub Copilot 学生认证申请流程与常见问题解答
  • JVM 运行时数据区域详解:从内存结构到面试考点
  • Android 原生分享功能实现详解
  • Web3 学习笔记 Day1: 概览与开发环境搭建
  • CherryStudio 使用指南:本地 AI 模型管理与知识库配置
  • 西门子 TIA Portal V19 安装与配置指南
  • 纯 TypeScript 文本测量引擎 Pretext 突破前端布局瓶颈
  • 如何快速部署 OpenAI Whisper:离线语音转文字指南
  • GitHub Copilot 网络代理配置与优化实战
  • Python 英文界面切换为中文的方法
  • GESP 2025 年 12 月 C++ 一级认证真题与解析:判断题 1-10
  • Gitee 代码上传指南:Git 基础与实战操作
  • 贝叶斯网络原理与代码实战
  • 基于FPGA的CARRY4抽头延迟链TDC延时仿真
  • OpenClaw MacOS 安装前环境变量设置教程
  • 解决 Nano Banana 生成中文模糊问题:结合 Seedream 4.5 重渲染方案
  • 突破 LLM 上下文瓶颈:上下文内存虚拟化 CMV 的设计与实践

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online