嵌入式工具链的选择与搭建

一、 工具链的对比解说

学习 STM32 之前,很多同学会先卡在一个问题上:到底应该用什么软件?

Keil、IAR、STM32CubeIDE、STM32CubeMX、VS Code、HAL 库、标准库、GCC、OpenOCD、ST-Link,这些名字看起来像是同一类东西,但实际上它们承担的职责并不一样。

所以在真正安装软件之前,我们要先把“工具链选型”这件事说清楚。

1. 什么是嵌入式工具链

嵌入式开发不是把 C 代码写完就结束了。代码必须经过编译、链接、烧录、调试,最后才能在 MCU 上运行。

因此,“工具链”不是某一个软件,而是一整套协作关系。

环节 解决的问题 常见工具
代码编辑 写 C 代码、看源码、管理工程 VS Code、Keil 编辑器、STM32CubeIDE
芯片配置 配置引脚、时钟、外设、生成初始化代码 STM32CubeMX、STM32CubeIDE
编译链接 把 C 代码变成 MCU 能执行的机器码 Arm Compiler、GCC Arm、IAR Compiler
烧录下载 把程序写进芯片 Flash ST-Link、J-Link、DAP-Link
在线调试 断点、单步、查看寄存器和内存 Keil Debug、IAR Debug、GDB、OpenOCD
库与框架 提供外设 API,降低寄存器使用门槛 HAL、LL、CMSIS、标准外设库

理解了这张表,后面再看各种工具组合就不会乱了。

2. 常见工具链组合

STM32 开发中,常见组合大致可以分成五类。

下面逐个分析。

2.1 C 语言 + Keil MDK + 标准外设库

这是很多老教程里常见的组合。

标准外设库,也就是 Standard Peripheral Library,曾经是 STM32 学习和开发中的主流方案。

但是现在不建议把它作为新项目和新课程的主线,原因很简单:它已经是偏旧的生态。很多老项目仍然能见到它,但 ST 后来的主要生态已经转向 STM32CubeMX、HAL、LL 这一套。

角度 评价
优点 代码相对直观,很多老教程资料使用它
缺点 生态陈旧,官方主线已经转向 Cube/HAL/LL
适合场景 维护老项目、看老教程、理解早期 STM32 开发方式
不适合场景 新手系统学习、新项目开发、课程主线

结论:可以了解,但不建议作为当前学习主线。

2.2 C 语言 + Keil MDK + STM32CubeMX + HAL 库

这是目前比较常见、也比较实用的组合。

这套方案的分工非常清楚:

工具 职责
STM32CubeMX 图形化配置芯片资源,生成初始化代码
HAL 库 提供外设抽象 API,降低直接配置寄存器的门槛
Keil MDK 编译、链接、烧录、调试

它的最大优点是贴近企业真实环境。很多公司依然使用 Keil MDK 做 Cortex-M 项目,尤其是 STM32、GD32 等 MCU 项目。

但它也有一个明显缺点:Keil 的代码编辑体验比较传统。写小工程还可以,项目稍微大一点,代码跳转、搜索、插件、主题、多文件管理等体验就不如 VS Code 舒服。

结论:稳定、常见、工程上有价值,但编辑体验一般。

2.3 C 语言 + VS Code + Keil MDK + STM32CubeMX + HAL 库

这是比较适合作为课程学习的折中方案。

这套组合的思路是:

让专业工具做专业的事,让好用的编辑器负责写代码。

也就是说,Keil 仍然负责编译、下载和调试,STM32CubeMX 负责配置芯片,VS Code 则负责更舒服地写代码和看代码。

工具 在这套组合中的定位
STM32CubeMX 负责硬件配置和初始化代码生成
HAL 库 负责提供外设 API
Keil MDK 负责工程编译、链接、下载、调试
VS Code 负责现代化编辑体验、代码阅读、插件扩展

这套方案的优点是兼顾了“企业常见工具链”和“现代代码编辑体验”。对于初学者来说,它还有一个额外好处:你会更清楚地看到每个工具到底在做什么,而不是被一个高度集成的 IDE 全部包起来。

结论:推荐作为 STM32 入门课程主线。

2.4 C 语言 + STM32CubeIDE + HAL 库

STM32CubeIDE 是 ST 官方推出的一体化开发环境。

它把 CubeMX 配置、代码编辑、编译、下载、调试整合到一个 IDE 里。

它的优点是安装和上手相对统一,不需要在多个软件之间来回切换。对一些初学者来说,这种“一体化”会降低环境搭建难度。

但从课程学习角度看,它也有一个问题:集成度太高。很多底层过程被 IDE 包起来了,初学者可能只知道点按钮,不知道背后发生了什么。

角度 评价
优点 官方一体化,安装简单,工具统一
缺点 集成度高,容易弱化对编译、链接、下载、调试分工的理解
适合场景 快速体验 STM32、个人小项目、偏官方生态的开发
课程建议 可以作为备选,但不作为理解工具链分工的最佳主线

结论:能用,而且官方支持很好,但不一定最适合用来拆解学习过程。

2.5 C 语言 + IAR + STM32CubeMX + HAL 库

IAR Embedded Workbench 是嵌入式行业中非常经典的商业 IDE。

它在一些对稳定性、代码质量、编译优化、认证要求较高的企业项目中比较常见。

但是它最大的问题是授权成本较高,对普通学习者并不友好。

角度 评价
优点 商业成熟,编译器质量高,企业项目中常见
缺点 授权成本高,不适合普通初学者长期使用
适合场景 企业项目、特定行业项目、已有 IAR 授权的团队
学习建议 了解即可,不作为新手主线工具

结论:企业里可能会遇到,但入门阶段没有必要把它作为主要工具。

2.6 GCC + CMake + OpenOCD + VS Code

这是一条更偏开源和工程化的路线。

这套方案不依赖 Keil 或 IAR,工具更开放,也更接近一些现代嵌入式工程、自动化构建、CI/CD、跨平台开发的做法。

但它对初学者要求更高。你需要理解编译器、链接脚本、启动文件、Make/CMake、GDB、OpenOCD 等内容。它很强,但不适合一开始就作为零基础入门路线。

角度 评价
优点 开源、灵活、适合自动化构建和跨平台工程
缺点 环境配置复杂,初学门槛高
适合场景 工程化项目、Linux/macOS 开发、CI/CD、深入理解底层构建
学习建议 有一定 STM32 基础后再学习

结论:进阶非常值得学,但不是最适合第一阶段的路线。

3. 为什么本课程推荐这套组合

综合学习成本、企业常见度、资料丰富度、调试便利性和代码编辑体验,推荐使用:

也就是:

组成 作用
C 语言 嵌入式 MCU 开发的基础语言
STM32CubeMX 配置芯片、生成初始化代码
HAL 库 提供统一外设 API,适合入门和工程开发
Keil MDK 负责编译、链接、下载、调试
VS Code 提升代码编辑和阅读体验

选择这套方案不是因为它“最先进”,而是因为它适合当前阶段。

它有几个现实优势。

维度 为什么合适
学习门槛 不需要一开始就手写所有寄存器配置
工程感 能看到配置、编译、下载、调试各环节
企业相关性 Keil、CubeMX、HAL 在 STM32 项目中非常常见
调试体验 Keil 对 Cortex-M 在线调试比较成熟
编辑体验 VS Code 弥补 Keil 写代码不舒服的问题
后续迁移 学会这套后,再迁移到 CubeIDE、IAR、GCC/CMake 都更容易

4. 选型结论

如果只是快速体验 STM32,可以用 STM32CubeIDE。

如果是在维护老项目,可能会遇到 Keil + 标准库。

如果是在企业高要求项目中,可能会遇到 IAR。

如果以后想走更工程化、更开源的路线,可以学习 GCC + CMake + OpenOCD

但对于当前课程和大多数 STM32 初学者,我更建议从下面这套开始:

最终记住一句话:

工具链选型不是追求“哪个软件最强”,而是选择一套最适合当前学习阶段、最方便理解工程流程、也最容易迁移到真实项目的组合。

二、 搭建基础开发环境

1. 安装 vscode

首先就是 vscode的安装,首先我们呢需要去他的官网来下载他安装包

image.png

下载地址默认会识别你的操作系统进行对应的安装包下载

image.png
下载之后 打开默认的安装包:
进入下载流程

  • 选择同意协议
    image.png

  • 勾选配置
    image.png

  • 点击安装即可
    image.png

  • 打开软件
    image.png|1043
    显示界面说明安装完成:
    image.png|1005

    vscode本身就是一个强大的文本编辑器,它自身的配置 可简单 也可以复杂, 这全然取决于你自己的想法,关于 vscode的配置自身是一个非常庞大话题,网上已经有很多的教程们这里就不再赘述,对此感兴趣的同学可以移步这个视频

2. keil MDK的安装

他本身是 的单片机开发的集成开发环境,能够兼容市面上的大部分的单片机开发
下载连接: https://www.keil.arm.com/mdk-community/
⚠之一以下几点:

  • 安装得分路径一定要是全英文,不能出现英文
  • 安装目录下不能跟51的KEIL或者是 KEIL4冲突 三者的目录必须要分开!!
  • 使用时如果出现了莫名其妙的错误,优先使用 google或者是 ai来解决问题,切勿自乱阵脚

image.png

点击之后会跳转到这样的界面,现在还没有到真正可以下载的页面,此时它提示还需要你提供一定的信息 才能继续下载社区版本。
image.png
填写好信息之后就会跳转到可以下载按爪改版的界面了:
image.png

image.png

  • 下载完之后我们就会得到在这样的安装包,接下来双击打开开始下载流程:
    image.png
    image.png

选择两个路径存放相关的二进制文件和包库:
image.png|1070
下一步的邮箱和个人信息可以随便填写,填写完成之后就会进入安装流程。
显示这样的界面就说明已经安装成功了:
image.png|1042

接下来就是下载我们将来需要使用到的芯片包,现在对此感到比较迷糊很正常,只要在下载好 keil之后再搜索框输入 指定的型号:

  • stm32F103
    image.png|1018

image.png|1022
image.png
image.png
此时也可以发现我们之前指定的 pack安装路径也已经出现了我们现在安装的 芯片包:
image.png

3. STM32cubeMX的安装

他的定位是硬件初始化与代码生成的图形化工具,其实他的核心意义就是将配置可视化,动态生成配置代码
下载地址: https://www.st.com/en/development-tools/stm32cubemx.html
image.png

  • 点击下载
    image.png
    image.png|809
  • 以游客的身份来下载软件:
    image.png|782
  • 填写信息,获取下载链接:
    image.png|798
  • 填写之后,在自己的有子昂这里就会收到一个下载链接:
    image.png|817
    基本的软件安装和钱买你的大同小异,基本上就是同意他的策略,然后选择默认软件的安装路径,只需要进行到这一步,选择默认就可直接安装:
    image.png

    在这里有一个小插曲,就是在安装这个软件之后会发现打开之后他就叉不掉了,这是用为他的后台更新程序正在检查后台
    在遇到这个问题的时候点击 CHECK FOR UPDATES这个按钮反复多点击几次,此时只需要等到一会儿就可以了

image.png|847

安装好之后就可以正常的打开软件了,但是如果未来想要更好的使用,还必须要注册信息才行,需要一个意法半导体的官方账号才行。
注册链接: https://www.st.com.cn/content/st_com/zh.html
注册账号之后,就开始安装固态库:
image.png|856
此时我们需要更换固态可的安装路径:

  • 固态库的文件体积比较大,不建议安装在 c disk
  • 不要安装在STM32CubeMX软件相同的目录下
  • 不要安装在有中文的路径下
    image.png|860
  • 点击下载固态库
    image.png|700
  • 选中指定的固态库进行下载就可以了
    image.png|876
  • 此时提示需要验证邮箱,把当时自己及用来注册意法半导体的官方账号的邮箱拿来验证就可以了:
    image.png|881
    接下来现在固件库就下载完成了,在第一次使用时才会提示需要这样的繁琐的配置,后面都不再需要这样繁琐的认证,只需要进行简单的验证即可。

进行的走这里基本的工具链路的选择基本就完成了,在后面的文章中会着重的讲解怎么串联工具链进行嵌入式的基本开发,当然这需要我么不能对接下来的硬件 MCU有更进一步的认识,所以下一期就回来是介绍介绍一些基本的硬件知识。路漫漫其修远兮~~ 在嵌入式的路上我们都还有很长的路要走 🥰