1. 为什么我们要告别Keil?聊聊Makefile编译STM32的“真香”体验
如果你和我一样,是个在Windows上玩STM32的嵌入式开发者,可能早就习惯了打开Keil MDK,点点鼠标,然后等着它编译、下载。Keil确实方便,尤其是对新手来说,图形化界面、一键操作,几乎不用操心底层发生了什么。但用久了,尤其是项目文件越来越多,或者想尝试更灵活的开发流程时,Keil的“重量感”和“封闭感”就慢慢显现出来了。每次打开软件都要等一会儿,项目配置稍微复杂点就得在各种菜单里翻找,最关键的是,它的编译过程像个黑盒子,你想定制一下优化选项、添加个预处理宏,都得在它的图形界面里摸索,有时候还找不到地方。
这时候,Makefile就登场了。我第一次听说用Makefile编译STM32工程,是在一个Linux嵌入式开发者的博客里,当时觉得这太“极客”了,离我们这些用Windows的“普通玩家”很远。但后来项目需要做持续集成,要求能在服务器上自动编译代码,Keil那一套就完全行不通了。硬着头皮研究了一下,才发现原来在Windows下用Makefile编译STM32标准库工程,不仅完全可行,而且一旦搭好环境,效率提升不是一点半点。想象一下,你只需要在命令行里敲一个 make,所有源文件就自动编译、链接,生成hex或bin文件;再敲一行命令,就能通过ST-Link烧录进去。整个过程干净利落,没有图形界面的拖沓,还能轻松集成到VSCode里,实现代码编辑、编译、调试(甚至有限度的)一条龙。
这次,我就以最经典的“蓝桥杯”神器——STM32F103C8T6为例,手把手带你从零开始,在Windows下搭建一套基于Makefile的STM32标准库开发环境。我们会用到GNU Arm Embedded Toolchain(也就是arm-none-eabi-gcc)、MinGW(提供make工具)和OpenOCD(用于烧录)。整个过程,我们会彻底摆脱对Keil的依赖,拥抱一种更透明、更高效、也更“程序员”的开发方式。你会发现,原来编译STM32可以这么简单直接。
2. 搭建你的Windows命令行“武器库”:环境准备全攻略
工欲善其事,必先利其器。在Windows上用Makefile玩转STM32,我们需要准备几样核心工具。别担心,它们都是免费且开源的,下载安装也不复杂。
2.1 获取四大必备神器
首先,我们来明确一下需要哪些东西:
- GNU Arm Embedded Toolchain (gcc-arm-none-eabi):这是我们的“编译器套件”。Keil用的是ARMCC或AC6编译器,而我们这里要用GNU为ARM架构提供的GCC编译器。它负责将你的C代码、汇编代码变成STM32能执行的机器码。你可以把它理解为一个命令行版本的“编译核心”。
- MinGW-w64 或 MSYS2:这是我们的“命令执行环境”。Windows自带的命令提示符(cmd)功能比较弱,尤其缺乏很多Linux下常用的工具(比如make)。MinGW或MSYS2提供了一个在Windows下模拟Linux命令行环境的能力,其中就包含了我们至关重要的
make命令(在MinGW里通常叫mingw32-make.exe)。 - OpenOCD:这是我们的“烧录和调试服务器”。它相当于一个桥梁,连接你的电脑和ST-Link(或J-Link)调试器,负责将编译好的程序文件“灌入”芯片,也支持基础的调试功能。我们将用它来替代Keil里面的下载按钮。
- STM32CubeMX:这个工具我们主要用来“借”两个关键文件。虽然我们用的是标准库(StdPeriph Lib),但CubeMX生成的针对GCC的启动文件和链接脚本写得非常标准,可以直接拿来用,省去了我们自己从头编写的麻烦。当然,如果你对自己的链接脚本很熟悉,也可以不用它。
下载地址与版本选择(截至我写这篇文章时的最新稳定版):
- gcc-arm-none-eabi:强烈建议从Arm官方开发者网站下载。版本选择上,不一定追求最新,我实测
10.3-2021.10或11.3.Rel1版本都非常稳定。下载那个Windows 64-bit的exe安装包就行,安装过程就是一路Next。 - MinGW-w64:我推荐使用MSYS2。它不仅提供了make,还有一个强大的包管理器
pacman,以后想安装其他工具(比如git、python)会非常方便。去MSYS2官网下载安装程序,安装后通过pacman -S mingw-w64-x86_64-make来安装make工具。 - OpenOCD:去OpenOCD的官方GitHub仓库发布页面,下载最新的Windows压缩包(例如
openocd-v0.12.0-i686-w64-mingw32.tar.gz)。解压到一个你喜欢的目录,比如D:\Tools\openocd。 - STM32CubeMX:去ST官网下载安装即可,这个大家应该很熟悉了。
2.2 配置系统环境变量:让命令行“认识”你的工具
软件下好了,接下来最关键的一步是配置系统环境变量。这步不做,你在命令行里输入 arm-none-eabi-gcc 或 make,Windows会一脸茫然地告诉你“不是内部或外部命令”。
操作步骤:

&spm=1001.2101.3001.5002&articleId=152244209&d=1&t=3&u=d9b3c7dd80144c9b9c651969d206e817)
1074

被折叠的 条评论
为什么被折叠?



