98世界杯主题曲_世界杯4强 - dajimy.com

刚开始学习 STM32 的时候,很多小伙伴满怀热情买好了各种设备,但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片~

STM32 的烧录方式多样且灵活,可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将介绍几种常见的 STM32 烧录方式,包括串口下载、 ST-Link V2 下载、 ST-LINK Utility 下载、 JLink 下载、 STVP 下载,保姆级教程,初学者福音。

五种方式不知道选哪种?直接看总结。

懒得找驱动安装包、软件安装包?我都给你提供啦。

通过深入了解这些烧录方式,相信大家将能够更好地理解 STM32 的烧录过程,选择合适的方式进行开发和调试。

0. 前置阅读

本文首发 良许嵌入式网 :https://www.lxlinux.net/e/ ,欢迎关注!

本文所涉及的源码及安装包如下(由于平台限制,请点击以下链接阅读原文下载):

https://www.lxlinux.net/e/stm32/five-ways-to-flash-program-to-stm32.html

如果不知道如何搭建 STM32 编程环境,不知道如何烧录 STM32 代码,可以阅读这篇文章:

https://www.lxlinux.net/e/stm32/stm32-quick-start-for-beginner.html

新手小白如果连 MDK 的使用都不熟悉,那么可以通过下文先熟悉一下 MDK 的使用:

https://www.lxlinux.net/e/stm32/mdk-development-tool-tutorial.html

文中所使用的芯片是 STM32F103C8T6 ,配套了一个工程模板,如果你需要自己搭建一个工程模板,可以参考下文:

https://www.lxlinux.net/e/stm32/create-stm32-hal-project-template.html

1. 安装包及驱动准备

安装包准备

1. MDK5安装包

2. 芯片固件包

3. 串口烧录工具(FlyMcu)

4. ST-Link Utility

5. STVP

驱动准备

1. CH340驱动

2. ST-Link驱动

3. JLink驱动

示例代码

STM32F103C8T6模板工程

2. 串口下载

串口下载是我初学时常用的下载方式,现在看有些不如 ST-Link 方便。 使用 ST-Link 基本可以实现一键下载程序,而串口需要反复拔插跳线帽,而且还需要单独的程序员,比较麻烦。

Need: CH340 USB 转 TTL 模块

这种设备主要作用是用来调试或下载程序。价格也很便宜,普遍 5~8 元。常见的有以下两种:

20016686f61a359878.png (56.59 KB )

下载附件

2025-7-10 14:45 上传

64705686f619bd3887.png (82.83 KB )

下载附件

2025-7-10 14:45 上传

个人更推荐下面一款,因为它可以切换 VCC 输出电压,在对一些传感器进行独立测试的时候会比较方便。不过反正也不贵,多买几个想怎么用就怎么用。

2.1 CH340驱动安装

82133686f6195da875.png (142.7 KB )

下载附件

2025-7-10 14:45 上传

80837686f6192284c3.png (140.25 KB )

下载附件

2025-7-10 14:45 上传

30258686f618e11374.png (290.28 KB )

下载附件

2025-7-10 14:45 上传

2.2 FlyMcu安装

串口下载工具有很多,这里推荐 FlyMcu 。

FlyMcu 是一款好用的 STM32 烧录程序软件,对于专业的单片机开发者来说应该非常适用,软件可以广泛地应用于电路编程和应用编程领域,支持进行编程、校验、读器件信息。

这款工具是国产的,大家如果需要最新版的,可以去它们的官网下载:

http://www.mcuisp.com/

当然,用我提供的也行,反正也是他们官网下载的。

70482686f6189a8d3d.png (422.7 KB )

下载附件

2025-7-10 14:45 上传

58541686f617f74c09.png (304.73 KB )

下载附件

2025-7-10 14:45 上传

6001686f6179a8447.png (81.75 KB )

下载附件

2025-7-10 14:45 上传

下载好后解压,双击 .exe 文件即可打开,无需安装。

2.3 硬件连线

在下载程序之前,请先接好线。接线图如下图所示:

1871686f6175245e7.png (962.26 KB )

下载附件

2025-7-10 14:45 上传

电源接线没什么好说的,主要是串口这边,一定要注意交叉接线,也就是 CH340 转 TLL 工具的 TX 要接板子的 RX ,CH340 转 TLL 工具的 RX 要接板子的 TX ,千万不要接错,否则就不能烧进去!

开发板上的 PA9 是 TX ,PA10 是 RX ,请按上一段提到的交叉接线接好线。

2.4 程序下载

打开 FlyMcu 。如果你们使用的是我上面推荐的 STM32F103C8T6 核心板,那么请下载 1. 安装包及驱动准备 我提供的模板工程,如下操作:

51922686f617022bc9.png (393.41 KB )

下载附件

2025-7-10 14:45 上传

接下来,将板子上的 BOOT0 跳线帽接到 1 ,BOOT1 路线帽维持在 0 ,如下图所示:

39419686f616b7272b.png (563.44 KB )

下载附件

2025-7-10 14:44 上传

为什么要这么操作呢?

这两个跳线帽是用来调整 BOOT0 和 BOOT1 的状态。跳线帽接到 1 就是高电平,接到 0 就是低电平。

BOOT0 和 BOOT1 是用于设置 STM32 的启动方式的:

20184686f614f5bb0b.png (20.41 KB )

下载附件

2025-7-10 14:44 上传

这里是用 USB 下载, 也就是串口下载,所以选择表中的第二个方式也就是 BOOT0 选择 1, BOOT1 选择 0 。

39285686f6144ebcfb.png (375.33 KB )

下载附件

2025-7-10 14:44 上传

然后你就可以点击软件上的 开始编程 按钮,但你会发现,右边一直处于连接状态。这个时候,只有你按一下板子上的 reset 按键(板子上唯一的一个按键),它就开始往下走了。

26119686f613d88138.png (591.47 KB )

下载附件

2025-7-10 14:44 上传

下载后记得把 BOOT0 的跳线冒跳回 0 端,BOOT0 和 BOOT1 都为 0 ,这样程序就从 flash 区启动,再按一下 reset 按键板子就开始运行烧录进去的代码了。

3. ST-Link V2下载

ST-Link V2 是我现在最常用的下载方式,也是我最推荐的。 ST-Link V2 是 STM8 、 STM32 系列单片机的在线仿真器和下载器。 ST-Link 出生就带有两种接口模式: SWIM 接口模式( STM8 ), SWD 接口模式( STM32 )。

Need: ST-Link V2 下载器

ST-Link 是一种用于 STM32 微控制器的调试和编程工具,它可以通过 SWD 或 JTAG 接口与开发板进行通信。一般也很便宜,七八元左右。

89603686f61373193b.png (146.83 KB )

下载附件

2025-7-10 14:44 上传

3.1 ST-Link驱动安装

86765686f6130c61b4.png (198.08 KB )

下载附件

2025-7-10 14:44 上传

28149686f612c02418.png (293.8 KB )

下载附件

2025-7-10 14:43 上传

59146686f6127d4c78.png (234.32 KB )

下载附件

2025-7-10 14:43 上传

13523686f612273b75.png (296.71 KB )

下载附件

2025-7-10 14:43 上传

87733686f611eb9f72.png (222.64 KB )

下载附件

2025-7-10 14:43 上传

52985686f611aa784a.png (219.15 KB )

下载附件

2025-7-10 14:43 上传

3.2 安装MDK5

MDK5 是由 Keil 公司发布的一款嵌入式软件开发环境,我们平时在进行 STM32 开发的时候,基本上都是在这个软件上进行。

MDK5 可以在它们的官网上下载,网址如下:

https://www.keil.com/demo/eval/arm.htm#/DOWNLOAD

54468686f61154ba2b.png (666.5 KB )

下载附件

2025-7-10 14:43 上传

当前最新版本是 MDK538A ,但新版并不意味着最好,可能会有一些奇奇怪怪的问题,也可能不稳定。

推荐大家使用 MDK534,也是我目前所使用的版本,至今未出过什么问题。安装包已经在1. 安装包及驱动准备 为大家提供了,接下来我就手把手教大家在你们的电脑上安装 MDK5 。

双击我给大家提供的安装包后,会出现以下界面,大家跟着我的图片操作即可:

83288686f61106730d.png (168.31 KB )

下载附件

2025-7-10 14:43 上传

42795686f610b11a47.png (254.12 KB )

下载附件

2025-7-10 14:43 上传

55976686f610709f4b.png (210.55 KB )

下载附件

2025-7-10 14:43 上传

38170686f6101ea998.png (172.47 KB )

下载附件

2025-7-10 14:43 上传

1875686f60fd373f9.png (122.91 KB )

下载附件

2025-7-10 14:43 上传

80870686f60f9b9cc9.png (132.04 KB )

下载附件

2025-7-10 14:43 上传

5008686f60f477bd1.png (238.53 KB )

下载附件

2025-7-10 14:43 上传

77418686f60f050d99.png (607.11 KB )

下载附件

2025-7-10 14:42 上传

4297686f60eb5d51a.png (505.82 KB )

下载附件

2025-7-10 14:42 上传

到此为止,MDK5 就安装完成了。

但是,我给你们提供的安装包是官网下载的正版版本,试用几天后就要收费了。破解的方法网络上有一大堆,这里我就不讲了,我也怕律师函。

接下来就要安装固件包了。什么是固件包呢?由于 ST 公司生产了非常多的芯片,每颗芯片所需要的支持文件都不一样,这些文件组合起来就是固件包。

但有这么多芯片,他们不可能把所有的固件包都集成在 MDK5 里,否则 MDK5 的安装包将变得超级无敌巨大,很占空间也没必要。比较好的解决方案就是你需要用到什么芯片,就安装对应的固件包就可以了。

固件包也是在官网上可以下载到,网址如下:

https://www.keil.arm.com/packs/

20110686f60e2d4371.png (285.78 KB )

下载附件

2025-7-10 14:42 上传

由于我们使用的板子是 STM32F103C8T6 ,属于 F1 系列,所以在搜索框里搜索 STM32F1 即可。如果大家使用的是其它系列芯片,那就搜索对应系列的关键词,不要傻乎乎都按下图搜索哦~

55864686f60de2ae8d.png (247.13 KB )

下载附件

2025-7-10 14:42 上传

同样的,由于服务器在国外,下载速度巨慢。大家用我提供的文件就可以了,同样也是官网上下载的,原汁原味。链接在 1. 安装包及驱动准备 可以找到。

安装的方法很简单,只需要双击安装包即可,然后它就会自动识别固件包的目录,点击 Next ,然后等进度条走到底就 OK 了。

80479686f60d7e7d85.png (182.97 KB )

下载附件

2025-7-10 14:42 上传

3.3 程序编译

如果你们使用的是我上面推荐的 STM32F103C8T6 核心板,那么请下载 1. 安装包及驱动准备 我提供的模板工程,然后打开这个工程。

23670686f60d39e3bb.png (346.05 KB )

下载附件

2025-7-10 14:42 上传

86709686f60cf558a1.png (559.27 KB )

下载附件

2025-7-10 14:42 上传

程序打开后,在上图中左上角箭头处,有三个按钮,我们所做的编译工作都是使用这三个按钮。那这三个按钮有什么作用呢?

第一个按钮: Translate 就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。

第二个按钮: Build 就是编译当下修改过的文件,它包含了语法检查,链接动态库文件,生成可执行文件。

第三个按钮: Rebuild 重新编译整个工程,跟 Build 这个按钮实现的功能是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。

在实际工作中,我们最经常使用的就是第二个按钮,另外两个用得不多,尤其是第一个。

3.4 硬件接线

6251686f60c8185e1.png (643.64 KB )

下载附件

2025-7-10 14:42 上传

核心板上边的电源线,随便找一根 microUSB 线来接就行,也就是之前手机充电线,扁头的那种,它就是用来供电的,没有传输数据。

而下边的下载引脚,主要是三根起作用: SWDIO 、 SWDCLK 、 GND 。大家认真对照核心板与 ST-Link ,别接错了哈。特别是 ST-Link ,接的是缺口对面那一排引脚,而不是靠近缺口的那一排引脚。为了让你们看更清楚,我又拍了一张细节图(够保姆吧)。

在下面这张图里,棕色是 GND ,红色是 SWDIO ,黄色是 SWDCLK ,大家可以对照着接线。

58416686f60c0c9a69.png (390.25 KB )

下载附件

2025-7-10 14:42 上传

3.5 程序下载

在下载之前,请先按下面的步骤做好配置。

88847686f60bb7de23.png (639.63 KB )

下载附件

2025-7-10 14:42 上传

15669686f60b4830c6.png (926.06 KB )

下载附件

2025-7-10 14:41 上传

40324686f60af5efef.png (542.06 KB )

下载附件

2025-7-10 14:41 上传

1990686f60ab764b0.png (460.92 KB )

下载附件

2025-7-10 14:41 上传

75541686f60a74c8c7.png (531.4 KB )

下载附件

2025-7-10 14:41 上传

到此为止,针对 MDK 的配置已经搞定了,现在就可以进行下载了。

在下载之前,请做好四件事:

就是刚刚前面的配置,一定要配置好;

设备的接线,只要有一根线没接对,就无法完成下载;

编译好程序;

板子一定要上电。

39688686f60a202807.png (862.32 KB )

下载附件

2025-7-10 14:41 上传

程序下载成功之后,板子自动运行新代码,会看到 LED 灯间隔 500 毫秒亮灭交替闪烁。

46562686f609b27999.png (288.33 KB )

下载附件

2025-7-10 14:41 上传

4. STM32 ST-LINK Utility下载

STM32 ST-LINK Utility 是针对STM32全系芯片进行编程(读、写、擦除、选项字)的一款工具。

ST-LINK Utility 只支持 ST-Link (多个版本)的下载调试器,支持的芯片只有 STM32 。

Need: ST-Link 下载器(和 3. ST-Link V2下载 使用的设备一样)

4.1 ST-LINK Utility安装

官网下载:

https://www.st.com/en/development-tools/stsw-link004.html

98716686f609686d46.png (308.33 KB )

下载附件

2025-7-10 14:41 上传

官网需要注册、填邮箱……怪麻烦的,所以建议直接拿我准备好的安装包( 1. 安装包及驱动准备 ),也是官网下的,4.6.0版本。

安装没啥好说的,一路 Next 就行,有需要的话记得改下安装路径。

4.2 硬件连接

ST-Link V2 和 STM32 引脚一一对应就可以了,采用SWD 接口模式,接好如图,插上电脑。

ST-Link V2 STM32

SWCLK —— SWCLK

SWDIO —— SWDIO

GND —— GND

3.3V —— 3V3

75484686f608eb5615.png (3.18 MB )

下载附件

2025-7-10 14:41 上传

4.2 程序下载

打开 ST-LINK Utility ,如图操作:

18851686f608901049.png (180.65 KB )

下载附件

2025-7-10 14:41 上传

8528686f6084caad0.png (152.38 KB )

下载附件

2025-7-10 14:41 上传

这里需要选择 hex 文件,如果你们使用的是我上面推荐的 STM32F103C8T6 核心板,可以下载 1. 安装包及驱动准备 我提供的模板工程,如下操作。想烧自己的代码要是没有 hex 文件的话可以用 MDK(Keil) 生成。

48896686f607fe6c18.png (29.72 KB )

下载附件

2025-7-10 14:41 上传

1765686f607bcc17b.png (181.04 KB )

下载附件

2025-7-10 14:40 上传

看到出现 “Verification...OK” 就是下载成功。

67186686f60761ac1e.png (166.73 KB )

下载附件

2025-7-10 14:40 上传

程序下载成功之后,板子自动运行新代码,会看到 LED 灯间隔 500 毫秒亮灭交替闪烁。

5. JLink下载

JLINK 是一个兼容 JTAG 的仿真器,可以烧入程序和调试。

调试 ARM ,需要遵循 ARM 的调试接口协议, JTAG 就是其中的一种。JTAG 是一种国际标准测试协议,也叫 ARM 调试协议。现在多数的高级器件都支持 JTAG 协议,如 DSP 、 FPGA 器件等。

网上有的 JLink 下载用的是 JFlash ,我觉得有点麻烦了,还要再下一个软件,直接用 MDK 就行。

Need: J-Link 仿真下载器

支持 KEIL 、 IAR 、 ADS 等编译仿真软件。支持功能 JTAG 、 SWD 、 SWO 、 VCOM 模式。正版 JLink 价格在 2000 元以上,某宝上仿的均价在 70 左右,但容易掉固件(一般商家支持帮我们重刷固件)。

37517686f606c55185.png (52.05 KB )

下载附件

2025-7-10 14:40 上传

5.1 J-Link驱动安装

官网下载地址:

https://www.segger.com/downloads/jlink

也可以用我提供的驱动安装包,我的是 V612 ,V1、V2、V8、V9 的仿真器都可以用,或者找买的客服,一般都有驱动(不走官网就跳过下两张图)。

35155686f60673c7ae.png (437.13 KB )

下载附件

2025-7-10 14:40 上传

86694686f6061a9bf0.png (615.3 KB )

下载附件

2025-7-10 14:40 上传

安装好后解压打开,点下图的 .exe 文件。

31358686f605d84dc8.png (10.17 KB )

下载附件

2025-7-10 14:40 上传

如下操作:

41521686f6055a132a.png (106.16 KB )

下载附件

2025-7-10 14:40 上传

42889686f604df009d.png (140.73 KB )

下载附件

2025-7-10 14:40 上传

80044686f604880bb9.png (73.34 KB )

下载附件

2025-7-10 14:40 上传

45252686f6044ce96d.png (188.4 KB )

下载附件

2025-7-10 14:40 上传

73729686f604146f05.png (193.21 KB )

下载附件

2025-7-10 14:40 上传

99108686f603de710d.png (261.54 KB )

下载附件

2025-7-10 14:39 上传

5.2 硬件连线

烧 STM32 只要用 4 条杜邦线就可以了,和 STM32 ST-LINK Utility 下载连线一样,采用SWD 接口模式,这里的 VREF 就是电源正极。

4878686f603581d05.png (242.82 KB )

下载附件

2025-7-10 14:39 上传

看图连线应该很简单吧,1、7、9是上面一排,20是下面一排哦。

88583686f6030503e6.png (188.68 KB )

下载附件

2025-7-10 14:39 上传

整体连好长这样:

7133686f602b9fd47.png (155.24 KB )

下载附件

2025-7-10 14:39 上传

5.3 程序下载

使用 MDK5 打开工程(这里用的是我的模板工程),点击魔法棒,跟我操作。

27955686f6026820c8.png (340.98 KB )

下载附件

2025-7-10 14:39 上传

93492686f60224f493.png (439.39 KB )

下载附件

2025-7-10 14:39 上传

一般这样设置就可以了,如果烧录失败,可以参考 3.5 。

28528686f601b71e56.png (196.52 KB )

下载附件

2025-7-10 14:39 上传

6. STVP下载

STVP 是很早的下载工具了,支持 ST7 、 STM8 、 STM32 系列。说实话,这玩意从安装到使用都是太奶级别,又臭又长,真的不建议使用。。

Need: ST-Link 下载器

6.1 STVP安装

官网下载:

https://www.st.com/en/development-tools/stvp-stm32.html#get-software

和 ST-LINK Utility 一样,官网需要注册、填邮箱……怪麻烦的,所以建议直接拿我准备好的安装包( 1. 安装包及驱动准备 ),也是官网下的。

39693686f6014d04f3.png (334.56 KB )

下载附件

2025-7-10 14:39 上传

12269686f600f1a63a.png (76.95 KB )

下载附件

2025-7-10 14:39 上传

安装过程也是一路 Next 就行,由于安装时我不能截屏了,所以拍几个关键步骤出来。

3136686f6009c5667.png (378.43 KB )

下载附件

2025-7-10 14:39 上传

25093686f600613262.png (326.63 KB )

下载附件

2025-7-10 14:39 上传

57609686f5fff6bd99.png (110.88 KB )

下载附件

2025-7-10 14:38 上传

PS :安装好后会看见 STVD 和 STVP ,我们用 STVP 就行。

STVD : ST Visual Develop ,可视化开发工具

STVP : ST Visual Programmer ,可视化编程工具

6.2 硬件连接

和3.4一样, ST-Link V2 和 STM32 引脚一一对应就可以了,接好如图,插上电脑。

ST-Link V2 STM32

SWCLK —— SWCLK

SWDIO —— SWDIO

GND —— GND

3.3V —— 3V3

45782686f5fe2be730.png (3.18 MB )

下载附件

2025-7-10 14:38 上传

6.3 程序下载

安装好后,桌面会有这个图标,点击打开。

35463686f5fddba2c9.png (7.56 KB )

下载附件

2025-7-10 14:38 上传

这里以 ST-Link 下载器和 STM32F103C8T6 核心板为例:

96827686f5fd80b728.png (274.38 KB )

下载附件

2025-7-10 14:38 上传

弹出新窗口,如下操作,这里打开的是 1. 安装包及驱动准备 我提供的模板工程,大家可以选自己的,要是 hex 文件,没有可以用 MDK(Keil) 生成。

34892686f5fd3745a9.png (411.02 KB )

下载附件

2025-7-10 14:38 上传

84075686f5fcf92b19.png (63.41 KB )

下载附件

2025-7-10 14:38 上传

14927686f5fcb09675.png (206.71 KB )

下载附件

2025-7-10 14:38 上传

7. 总结

对于初学者来说,没必要掌握那么多烧录方式,就我和我身边的程序猿来说,大家都喜欢用 ST-Link V2 搭配 MDK5 编写、烧录程序,所以我也推荐初学者先从 ST-Link V2 烧录方式开始,比较方便快捷。

感谢各位看官, peace and love !

tips:

hex 文件、 bin 文件、 axf 文件的区别:

hex 文件、 bin 文件和 axf 文件是在嵌入式系统开发中常见的文件格式,用于存储编译后的程序代码和数据。

hex 文件( Intel HEX ): hex 文件是一种十六进制文本文件格式,用于表示程序代码和数据的二进制内容。它由一系列十六进制数值组成,每个数值对应一个字节的数据。 hex 文件通常包含地址信息、数据记录类型和实际的数据内容。它是一种常见的文件格式,广泛用于烧录设备、调试工具和仿真器等。

bin 文件( Binary ): bin 文件是一种原始的二进制文件格式,直接以二进制形式存储程序代码和数据。 bin 文件没有像 hex 文件那样进行十六进制的编码,而是按照字节的实际值进行存储。 bin 文件可以更直观地表示程序的原始二进制数据,但缺少了地址和其他元数据信息,因此在烧录和调试过程中需要额外的处理。

axf 文件( ARM eXtended Format ): axf 文件是针对 ARM 架构开发的一种特定格式,包含了可执行程序的代码、数据和符号表等信息。 axf 文件通常由 ARM 开发工具链生成,可以包含链接器产生的符号表、调试信息和其他附加的元数据。 axf 文件在调试过程中非常有用,可以用于查看和分析程序的结构、变量信息等。

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/yychuyu/article/details/134818954