STM32 CubeMX Makefile 工程编译 入门指南

本文面向Makefile 纯新手,从零讲解:CubeMX 生成 Makefile 工程所需的环境、工具选择、安装配置、环境变量设置、工程编译全流程。全程使用官方工具、无冗余操作,看完即可独立完成编译。


前言

STM32 CubeMX 可以直接生成 Makefile 工程 ,无需安装 Keil、STM32CubeIDE 等大型 IDE,仅通过轻量命令行工具即可完成代码编译,生成可烧录的固件(.bin/.hex)。

这套方案体积小、跨平台、行业通用,是嵌入式开发必备基础技能。


一、Makefile 基础介绍

1. 什么是 Makefile?

Makefile 是一个编译规则脚本文件 ,它里面写好了代码如何编译、文件如何链接、输出固件的全套规则。

我们不需要手写复杂的编译命令,只需要执行一个 make 指令,工具就会自动按照 Makefile 的规则完成编译。

2. Makefile 在 STM32 开发中的作用

  • 读取 CubeMX 生成的工程配置
  • 自动调用编译器处理 C 代码、汇编文件
  • 自动生成 STM32 可运行的固件文件
  • 一键编译、一键清理编译产物

3. 核心分工(必记)

  • Makefile = 施工图纸
  • make 工具 = 指挥官(执行图纸)
  • ARM 编译器 = 工人(真正编译代码)

二、编译 STM32 Makefile 工程的必备条件

Windows 系统原生不支持 Makefile 编译,必须安装两个核心工具:

  1. 必选 :ARM 官方交叉编译器(arm-none-eabi-gcc)→ 把 C 代码编译成 STM32 固件
  2. 二选一:Make 构建工具 → 执行 Makefile 脚本(Windows 无自带,需手动安装)

三、工具选择推荐

方案对比(根据需求二选一/或者都选择)

工具类型 推荐工具 特点 适合人群
Make 工具 (二选一) xpack-windows-build-tools 轻量(几MB)、开箱即用、无冗余、嵌入式专用 只做 STM32 开发,追求极简
MSYS2 + MinGW64 make 通用型、功能全、可拓展其他开发 想兼顾其他编程学习
编译器(必选) arm-gnu-toolchain (arm-none-eabi-gcc) ARM 官方、适配所有 STM32 芯片 所有开发者

四、官方下载链接

1. ARM 官方编译器(必装)

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

选择:arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.zip

(1)网页中下滑,找到合适的版本下载内容:

2. 轻量 Make 工具(方案一,简洁解压即用)

https://github.com/xpack-dev-tools/windows-build-tools-xpack/releases

下载:xpack-windows-build-tools-4.4.1-3-win32-x64.zip

(1)直接下载最新版压缩包:

3. MSYS2(方案二,通用型)

https://www.msys2.org/

下载:Windows 64 位安装包

(1)直接下载最新版exe安装包:


五、工具安装与配置

第一部分:安装 ARM 编译器(必装)

将下载的 zip 压缩包:arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.zip

解压到无中文、无空格的路径

示例:C:\Programs\arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi


第二部分:安装 Make 工具(二选一)

方案 A:xpack 轻量版(推荐新手)
  1. 下载的 zip 压缩包:xpack-windows-build-tools
  2. 解压到无中文、无空格的路径
    示例:C:\Programs\xpack-windows-build-tools-4.4.1-3
  3. 该工具无需安装,解压即用
方案 B:MSYS2 版(通用型)
  1. 安装 MSYS2,路径无中文、无空格
  2. 安装完成后,打开 MSYS2 MINGW64 终端
  1. 执行命令(复制粘贴,回车运行):
bash 复制代码
# 第一步:更新包管理器
pacman -Syu
  1. 若终端自动关闭,重新打开 MSYS2 MINGW64,执行:
bash 复制代码
# 第二步:补全更新
pacman -Su
  1. 安装 make 工具(仅安装需要的工具,不装冗余内容):
bash 复制代码
# 第三步:安装 mingw32-make
pacman -S mingw-w64-x86_64-make
  1. 出现提示输入 y 回车,等待安装完成

六、系统环境变量配置

环境变量的作用:让系统在任意目录都能找到编译工具。

1. 打开环境变量设置

右键「此电脑」→ 属性 → 高级系统设置 → 环境变量

找到下方 系统变量 → Path → 编辑

2. 添加工具路径(根据你的安装路径修改)

必加:ARM 编译器路径
plain 复制代码
C:\Programs\arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi\bin
方案 A:添加 xpack 工具路径
plain 复制代码
C:\Programs\xpack-windows-build-tools-4.4.1-3\bin
方案 B:添加 MSYS2 工具路径
plain 复制代码
C:\Programs\MSYS2\mingw64\bin

3. 保存配置

一路点击 确定,关闭所有窗口(必须保存,否则配置无效)


七、验证工具安装成功(关键步骤)

  1. 打开 CMD 或 PowerShell(快捷键:Win+R 输入 cmd)
  2. 依次输入以下命令,验证工具是否正常:

1. 验证 ARM 编译器

bash 复制代码
arm-none-eabi-gcc -v

✅ 显示版本号 → 成功

2. 验证 Make 工具

方案 A(xpack):
bash 复制代码
make -v
方案 B(MSYS2):
bash 复制代码
mingw32-make -v

✅ 显示版本号 → 成功


八、使用 CubeMX 生成 Makefile 工程

  1. 打开 STM32CubeMX,新建工程,选择你的 STM32 芯片
  2. 完成芯片引脚、时钟、外设配置(常规配置)
  3. 进入 Project Manager 页面
    • Project Name:自定义工程名
    • Project Location:自定义路径
    • Toolchain / IDE :选择 Makefile(核心选项)
  4. 点击右上角 GENERATE CODE,生成工程
  5. 生成完成后,打开工程文件夹,可看到 Makefile 文件

九、命令行编译 STM32 工程

1. 进入工程目录

  1. 打开 CMD
  2. 切换到你的 Makefile 所在目录
    示例:
bash 复制代码
cd C:\Users\Wang2\Desktop\makefile-test\project

2. 执行编译命令

方案 A(xpack 工具):
bash 复制代码
make clean
make
方案 B(MSYS2 工具):
bash 复制代码
mingw32-make clean
mingw32-make

3. 编译成功标志

控制台显示:

plain 复制代码
arm-none-eabi-objcopy build/xxx.elf build/xxx.bin -O binary

✅ 工程目录下会生成 build 文件夹,里面有 .bin/.hex 固件文件

4. 清理编译文件(可选)

bash 复制代码
# xpack 工具
make clean

# MSYS2 工具
mingw32-make clean

十、新手常见问题

  1. 报错:'make' 不是内部或外部命令
    环境变量未配置成功,检查 Path 路径是否正确。
  2. 报错:'arm-none-eabi-gcc' 不是内部或外部命令
    ARM 编译器未安装,或未勾选自动添加环境变量。
  3. 编译失败
    检查工程路径是否包含中文、空格(CubeMX 工程不支持中文路径)。
  4. MSYS2 安装失败
    以管理员身份运行终端,重新执行更新命令。

十一、总结

全套流程一句话概括

  1. 安装 ARM 编译器(真正编译代码)
  2. 安装 Make 工具(执行 Makefile)
  3. 配置环境变量(让系统找到工具)
  4. CubeMX 生成 Makefile 工程
  5. 命令行执行 make / mingw32-make → 一键编译

核心工具关系

  • CubeMX → 生成 Makefile 规则
  • Make 工具 → 指挥官,调度编译流程
  • ARM 编译器 → 工人,生成 STM32 固件

按照本文步骤操作,所有 Windows 电脑都可以快速搭建 STM32 Makefile 编译环境!

相关推荐
xianrenli381 小时前
MSAI:第四周练习:思维链 (Chain-of-Thought) 提示与参数调优
学习·msai
2601_961875241 小时前
法考备考计划表|学习计划|资料已整理
java·开发语言·学习·eclipse·tomcat·c#·hibernate
caimouse2 小时前
Reactos 第 9 章 设备驱动 — 9.10 磁盘的Miniport驱动模块
windows·嵌入式硬件
xiangw@GZ2 小时前
WiFi系统BCC与LDPC纠错编码技术性能对比
单片机·嵌入式硬件
qq_571099352 小时前
学习周报四十九
学习
一锅炖出任易仙2 小时前
创梦汤锅学习日记day34
学习·游戏引擎
半导体守望者2 小时前
AE AZX射频调谐器射频负载匹配(调谐)原理PPT
学习·机器人·自动化·制造·模块测试
me8322 小时前
【AI面试】大模型面试60问(面试速记+详解)
人工智能·学习·ai
AoDeLuo2 小时前
EthercCAT软件主站方案对比
stm32·单片机·嵌入式硬件
CHHH_HHH2 小时前
【C++】哈希表原理与实战:从冲突解决到性能优化
开发语言·数据结构·c++·学习·算法·哈希算法·散列表