告别Keil依赖:在Windows下用Makefile高效编译STM32标准库工程(基于STM32F103C8T6)

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 获取四大必备神器

首先,我们来明确一下需要哪些东西:

  1. GNU Arm Embedded Toolchain (gcc-arm-none-eabi):这是我们的“编译器套件”。Keil用的是ARMCC或AC6编译器,而我们这里要用GNU为ARM架构提供的GCC编译器。它负责将你的C代码、汇编代码变成STM32能执行的机器码。你可以把它理解为一个命令行版本的“编译核心”。
  2. MinGW-w64 或 MSYS2:这是我们的“命令执行环境”。Windows自带的命令提示符(cmd)功能比较弱,尤其缺乏很多Linux下常用的工具(比如make)。MinGW或MSYS2提供了一个在Windows下模拟Linux命令行环境的能力,其中就包含了我们至关重要的 make 命令(在MinGW里通常叫 mingw32-make.exe)。
  3. OpenOCD:这是我们的“烧录和调试服务器”。它相当于一个桥梁,连接你的电脑和ST-Link(或J-Link)调试器,负责将编译好的程序文件“灌入”芯片,也支持基础的调试功能。我们将用它来替代Keil里面的下载按钮。
  4. STM32CubeMX:这个工具我们主要用来“借”两个关键文件。虽然我们用的是标准库(StdPeriph Lib),但CubeMX生成的针对GCC的启动文件和链接脚本写得非常标准,可以直接拿来用,省去了我们自己从头编写的麻烦。当然,如果你对自己的链接脚本很熟悉,也可以不用它。

下载地址与版本选择(截至我写这篇文章时的最新稳定版):

  • gcc-arm-none-eabi:强烈建议从Arm官方开发者网站下载。版本选择上,不一定追求最新,我实测 10.3-2021.1011.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-gccmake,Windows会一脸茫然地告诉你“不是内部或外部命令”。

操作步骤:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值