news 2026/6/5 11:27:29

CLion 开发 STM32 环境搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CLion 开发 STM32 环境搭建

在传统的 STM32 开发中,Keil MDK 凭借其一键安装、开箱即用的工程模板和集成调试器,长期占据主流地位。然而,Keil 也存在代码编辑体验一般、索引速度慢、跨平台能力弱以及高昂的授权费用等问题。相比之下,JetBrains CLion 作为现代 IDE,拥有智能代码补全、深度 CMake 集成、强大的调试前端以及统一的 UI 风格,能够显著提升嵌入式开发效率。但 CLion 本身并不直接支持 STM32,需要开发者手动配置交叉编译工具链、调试接口和构建系统,门槛较高。本文基于实际开发经验,系统对比了 Keil 与 CLion 开发流程的差异,并详细记录了在 Ubuntu 与 Windows 平台下使用 CLion + OpenOCD + STM32CubeMX + arm-none-eabi-gcc 搭建 STM32 开发环境的完整步骤,涵盖从工具安装、工程生成到编译、下载、调试的全流程,同时提供针对 F103 系列常见报错的具体修复方法。无论你是希望摆脱 Keil 束缚的资深工程师,还是初次尝试 CLion 的嵌入式爱好者,本文都能帮助你快速搭建一套稳定、高效的 CLion STM32 开发环境。

参考:https://zhuanlan.zhihu.com/p/628628503

1.安装OpenOCD

OpenOCD 是一个开源的片上调试器,负责与调试探头(如 ST‑Link、J‑Link、CMSIS‑DAP)通信,向目标 MCU 发出调试和编程指令。它实现了 GDB 远程调试协议,使得 GDB 或 IDE(如 CLion)能够通过它实现断点设置、单步执行、寄存器/内存查看以及固件下载。在 CLion 环境中,通过“OpenOCD 运行/调试配置”调用,实现一键下载和调试。

1.1 Ubuntu

sudo apt install openocd

  • 对应版本:
  • Ubuntu-20.04 :0.10.0
  • Ubuntu-22.04 :0.11.0

1.2 Windows

1.2.1 下载

首先,您需要从 OpenOCD 官方网站下载 Windows 版本的 OpenOCD。访问 https://gnutoolchains.com/arm-eabi/openocd/ 并选择合适的版本。通常您可以选择预编译的 Windows 执行文件。

1.2.2 安装并配置环境变量

在Path中配置OpenOCD可执行文件的路径

2.安装STM32CubeMX

STM32CubeMX 是 ST 官方推出的图形化配置工具,用于初始化 STM32 的时钟树、外设(GPIO、USART、I2C、SPI、ADC 等)、中间件(FreeRTOS、USB、FATFS)以及引脚分配。它能够自动生成初始化代码,并支持多种 IDE/工具链(Keil、IAR、STM32CubeIDE、Makefile 等)。

特点

  • 图形化界面,无需手动查阅数据手册配置寄存器,大幅降低入门门槛。
  • 可计算并优化系统时钟,避免无效或冲突的配置。
  • 生成的外设初始化代码基于 STM32 HAL 库或 LL 库,具有良好的可读性和可移植性。
  • 在 CLion 开发流程中:
  • 先用 CubeMX 创建 .ioc 文件,配置好芯片和外设。
  • Project Manager中将 Toolchain/IDE 选为 STM32CubeIDE(会生成结构清晰的源码目录和 CMakeLists.txt)。
  • 随后在 CLion 中直接打开该工程,CLion 会识别 CMake 结构,再按本文档后续步骤添加编译选项和调试配置即可。

下载链接https://www.st.com/en/development-tools/stm32cubemx.html

3.安装MinGW(Windows平台)

MinGW 是一套在 Windows 平台上原生支持 GNU 工具链(GCC、GDB、make 等)的开发环境。它不需要模拟层(如 Cygwin),生成的程序直接调用 Windows API,运行效率高。在 STM32 开发中,MinGW 主要用于提供make工具和必要的命令行环境,以便 CLion 或手动方式能够执行 CMake 构建、编译脚本等操作。

  • 下载地址https://www.mingw-w64.org/downloads/
  • 配置环境变量:在Path中配置

4.安装arm-none-eabi-gcc

是一套专为裸机 Arm Cortex‑M/R 处理器(包括 STM32)打造的交叉编译工具链。它包含编译器(arm‑none‑eabi‑gcc)、汇编器、链接器、库文件(newlib)以及调试器(arm‑none‑eabi‑gdb)。使用该工具链,可以在 PC(x86/x64)上编译出能在 STM32 上运行的二进制代码。在 CLion 中,通过 CMake 的 toolchain 文件或直接在 target_compile_options 中指定该工具链路径,即可无缝使用。

4.1 Ubuntu

sudo apt install arm-none-eabi-gcc

4.2 Windows

  • 下载:https://developer.arm.com/downloads/-/gnu-rm
  • 解压并添加环境变量:将bin文件夹路径添加到Path中

5.创建项目

5.1 使用Clion新建STM32CubeMX项目

选择好项目路径后点击创建

这里先跳过

5.2 使用STM32CubeMX打开.ioc文件

5.3 配置STM32工程(这里不详细说明了,简单说下怎么修改芯片型号)

将 `Toolchain/IDE` 参数修改为:`STM32CubeIDE`

如果没有弹出这个,说明路径配置的有问题

点击Yes,弹出这个窗口:

点击Close

5.4 Clion配置编译、下载、调试

回到Clion界面,先点击跳过

点击加载CMake项目

出现这些就是成功了

编辑配置

添加OpenOCD配置

配置如下:

面板配置文件参考这个:配置CLion用于STM32开发【优雅の嵌入式开发】 - 知乎

新建好.cfg文件后选择即可

点击编译

6.编译选项和宏配置

# Add project symbols (macros)

target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE

# 告诉 CMSIS 头文件:此设备有 FPU __FPU_PRESENT=1

# 告诉 CMSIS:项目将使用 FPU(通常由编译器选项隐式设置,但显式定义更安全)

__FPU_USED=1

# 如果你使用 Keil/IAR 的兼容宏,可以加上,但 GCC 下非必需

# __CC_ARM

# __TARGET_FPU_VFP # HAL 库相关定义(根据你的实际配置调整)

USE_HAL_DRIVER

ARM_MATH_CM4

STM32F429xx # 确保这个是正确的!F429IGT6 属于 F429/439 系列

)

target_compile_options(${PROJECT_NAME} PRIVATE

# 指定目标 CPU 架构 (Cortex-M4) -mcpu=cortex-m4

# 生成 Thumb-2 指令集代码(必须)

-mthumb

# 启用单精度 FPU (FPUv4-SP) —— STM32F4 系列的标准

-mfpu=fpv4-sp-d16

# 使用硬浮点 ABI,性能最佳

# 注意:这要求整个工具链(包括链接库)都支持硬浮点

-mfloat-abi=hard

# 其他常用优化和警告选项

-O0 # 调试时建议用 -O0,发布时可改为 -Os 或 -O2 -g

-Wall

-Wextra

)

完成cmakelists示例

cmake_minimum_required(VERSION 3.22)

#

# This file is generated only once,

# and is not re-generated if converter is called multiple times.

#

# User is free to modify the file as much as necessary

#

# Setup compiler settings

set(CMAKE_C_STANDARD 11)

set(CMAKE_C_STANDARD_REQUIRED ON)

set(CMAKE_C_EXTENSIONS ON)

# Define the build type

if (NOT CMAKE_BUILD_TYPE)

set(CMAKE_BUILD_TYPE "Debug")

endif ()

# Set the project name

set(CMAKE_PROJECT_NAME RC_car)

# Include toolchain file

include("cmake/gcc-arm-none-eabi.cmake")

# Enable compile command to ease indexing with e.g. clangd

set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)

# Core project settings

project(${CMAKE_PROJECT_NAME})

message("Build type: " ${CMAKE_BUILD_TYPE})

# Enable CMake support for ASM and C languages

enable_language(C ASM)

# Create an executable object type

add_executable(${CMAKE_PROJECT_NAME}

)

# Link directories setup

target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE

# Add user defined library search paths

)

# Add sources to executable

target_sources(${CMAKE_PROJECT_NAME} PRIVATE

startup_stm32f103v8tx.s #重点!!!!

# 其他需要编译的文件

)

# Add include paths

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE

# Add user defined include paths

)

# Add project symbols (macros)

target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE

# Add user defined symbols

STM32F10X_HD

USE_STDPERIPH_DRIVER)

# Add linked libraries

target_link_libraries(${CMAKE_PROJECT_NAME}

# Add user defined libraries

)

target_compile_options(${PROJECT_NAME} PRIVATE

# 其他常用优化和警告选项

-O0 #关闭优化,便于调试

-g #生成调试信息

-Wall -Wextra #启用常用警告

-mcpu=cortex-m3 -mthumb #指定目标处理器和Thumb指令集

-mthumb-interwork #支持Thumb与ARM指令混合使用

-ffunction-sections -fdata-sections #将函数和数据放入独立段,便于链接器优化

-fno-common #避免未初始化全局变量的公共符号冲突

-fmessage-length=0 #取消编译器消息长度限制

)

7.避坑

7.1 F103报错:may not be the same -- `strexb r3,r2,[r3]……

修改core_cm3.c中736,753,770行

__ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );

将"=r"修改为"=&r"

8.总结

与 Keil 的“一体化但封闭”不同,CLion + 开源工具链的方案虽然初期配置略显繁琐,但带来了更好的编辑体验、跨平台能力(Windows/Linux 通用)、CMake 原生支持以及自由定制的编译/调试选项。成功搭建环境的关键在于三点:

  • 工具链路径正确配置(OpenOCD、arm-none-eabi-gcc、MinGW)
  • STM32CubeMX 生成工程时选择 STM32CubeIDE 类型
  • 以及CLion 中 CMakeLists.txt 的精确调整(包括 FPU 宏、CPU 架构标志、启动文件等)。

文中提供的编译选项示例、F103 系列 core_cm3.c 的内联汇编修复技巧,均来自真实踩坑经验。完成配置后,开发者即可享受 CLion 带来的代码跳转、实时分析、图形化调试等现代 IDE 特性,大幅提升 STM32 开发效率。建议初次配置者严格按步骤操作,并善用文中 .cfg 面板示例确保调试器正常连接。若遇到新问题,可结合官方文档与社区资源进一步排查。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 11:24:19

中国工业企业出海,为什么最容易输在”市场误判”?

过去很多年,中国ToB企业的增长主要依赖国内市场。无论是工业设备、自动化系统、软件平台,还是工程服务和运营服务,大多数企业都已经建立了相对成熟的国内销售体系。然而,当企业开始进入海外市场时,很多管理者会发现一个…

作者头像 李华
网站建设 2026/6/5 11:24:16

新手友好,快马助力从天元云防火墙策略零基础到入门

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请创建一个面向新手的防火墙策略学习应用,聚焦天元云环境,要求实现以下功能:以图文并茂方式解释防火墙基本概念,如入站出站规则&…

作者头像 李华
网站建设 2026/6/5 11:24:16

百度网盘提取码智能获取工具全攻略:3秒解密任何分享资源

百度网盘提取码智能获取工具全攻略:3秒解密任何分享资源 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘资源下载时找不到提取码而烦恼吗?每次看到心仪的学习资料、影视资源或工作文件&a…

作者头像 李华
网站建设 2026/6/5 11:23:17

WorkshopDL:终极Steam创意工坊下载器,三步实现跨平台模组自由

WorkshopDL:终极Steam创意工坊下载器,三步实现跨平台模组自由 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台上的游戏无法使…

作者头像 李华