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 编译环境!

相关推荐
幸福巡礼1 天前
【LangChain 1.2 实战(一)】 概述
笔记·学习·langchain
知识分享小能手1 天前
R语言入门学习教程,从入门到精通,R语言数据计算与分组统计(9)
开发语言·学习·r语言
lizhihai_991 天前
股市学习心得—半导体12种核心材料
大数据·人工智能·学习
FreakStudio1 天前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy
sakiko_1 天前
UIKit学习笔记3-布局、滚动视图、隐藏或显示视图
前端·笔记·学习·objective-c·swift·uikit
天诚智能门锁1 天前
天诚公租房管控平台CAT.1人脸猫眼智能锁助力青神县公租房管理
人工智能·嵌入式硬件·物联网·智能家居·智能硬件
嵌入式-老费1 天前
瑞芯微soc的学习和应用(题外话之esp32开发)
学习
辰同学ovo1 天前
从全局登录状态管理学习 Redux
前端·javascript·学习·react.js
ting94520001 天前
告别无效学习:Scholé 如何用 AI 重构职场学习,让学习直接嵌入工作流
人工智能·学习·重构
xian_wwq1 天前
【学习笔记】Harness到底是什么
笔记·学习·ai·harness