STM32下载程序的五种方法

刚开始学习 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 元。常见的有以下两种:

    STM32下载程序的五种方法_第1张图片

    STM32下载程序的五种方法_第2张图片

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

2.1 CH340驱动安装

STM32下载程序的五种方法_第3张图片

STM32下载程序的五种方法_第4张图片

STM32下载程序的五种方法_第5张图片

2.2 FlyMcu安装

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

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

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

http://www.mcuisp.com/

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

STM32下载程序的五种方法_第6张图片

STM32下载程序的五种方法_第7张图片

STM32下载程序的五种方法_第8张图片

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

2.3 硬件连线

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

STM32下载程序的五种方法_第9张图片

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

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

2.4 程序下载

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

STM32下载程序的五种方法_第10张图片

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

STM32下载程序的五种方法_第11张图片

为什么要这么操作呢?

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

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

BOOT0 BOOT1 启动模式 说明
0 X 用户闪存存储器 用户闪存存储器,也就是 flash 启动
1 0 系统存储器 系统存储器,用于串口下载
1 1 SRAM启动 SRAM启动,用于在SRAM中调试代码

这里是用 USB 下载, 也就是串口下载,所以选择表中的第二个方式也就是 BOOT0 选择 1, BOOT1 选择 0STM32下载程序的五种方法_第12张图片

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

STM32下载程序的五种方法_第13张图片

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

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

  • Need: ST-Link V2 下载器

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

    STM32下载程序的五种方法_第14张图片

3.1 ST-Link驱动安装

STM32下载程序的五种方法_第15张图片

STM32下载程序的五种方法_第16张图片

STM32下载程序的五种方法_第17张图片

STM32下载程序的五种方法_第18张图片

STM32下载程序的五种方法_第19张图片

STM32下载程序的五种方法_第20张图片

3.2 安装MDK5

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

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

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

STM32下载程序的五种方法_第21张图片

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

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

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

STM32下载程序的五种方法_第22张图片

STM32下载程序的五种方法_第23张图片

STM32下载程序的五种方法_第24张图片

STM32下载程序的五种方法_第25张图片

STM32下载程序的五种方法_第26张图片

STM32下载程序的五种方法_第27张图片

STM32下载程序的五种方法_第28张图片

STM32下载程序的五种方法_第29张图片

STM32下载程序的五种方法_第30张图片

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

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

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

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

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

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

STM32下载程序的五种方法_第31张图片

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

STM32下载程序的五种方法_第32张图片

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

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

STM32下载程序的五种方法_第33张图片

3.3 程序编译

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

STM32下载程序的五种方法_第34张图片

STM32下载程序的五种方法_第35张图片

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

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

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

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

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

3.4 硬件接线

STM32下载程序的五种方法_第36张图片

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

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

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

STM32下载程序的五种方法_第37张图片

3.5 程序下载

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

STM32下载程序的五种方法_第38张图片

STM32下载程序的五种方法_第39张图片

STM32下载程序的五种方法_第40张图片

STM32下载程序的五种方法_第41张图片

STM32下载程序的五种方法_第42张图片

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

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

  1. 就是刚刚前面的配置,一定要配置好;
  2. 设备的接线,只要有一根线没接对,就无法完成下载;
  3. 编译好程序;
  4. 板子一定要上电。

STM32下载程序的五种方法_第43张图片

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

STM32下载程序的五种方法_第44张图片

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

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

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

官网下载:

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

STM32下载程序的五种方法_第45张图片

官网需要注册、填邮箱……怪麻烦的,所以建议直接拿我准备好的安装包( 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

STM32下载程序的五种方法_第46张图片

4.2 程序下载

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

STM32下载程序的五种方法_第47张图片

STM32下载程序的五种方法_第48张图片

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

STM32下载程序的五种方法_第49张图片

STM32下载程序的五种方法_第50张图片

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

STM32下载程序的五种方法_第51张图片

程序下载成功之后,板子自动运行新代码,会看到 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 左右,但容易掉固件(一般商家支持帮我们重刷固件)。

STM32下载程序的五种方法_第52张图片

5.1 J-Link驱动安装

官网下载地址:

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

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

STM32下载程序的五种方法_第53张图片

STM32下载程序的五种方法_第54张图片

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

如下操作:

STM32下载程序的五种方法_第55张图片

STM32下载程序的五种方法_第56张图片

STM32下载程序的五种方法_第57张图片

STM32下载程序的五种方法_第58张图片

STM32下载程序的五种方法_第59张图片

STM32下载程序的五种方法_第60张图片

5.2 硬件连线

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

STM32下载程序的五种方法_第61张图片

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

STM32下载程序的五种方法_第62张图片

整体连好长这样:

STM32下载程序的五种方法_第63张图片

5.3 程序下载

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

STM32下载程序的五种方法_第64张图片

STM32下载程序的五种方法_第65张图片

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

STM32下载程序的五种方法_第66张图片

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. 安装包及驱动准备 ),也是官网下的。

STM32下载程序的五种方法_第67张图片

STM32下载程序的五种方法_第68张图片

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

STM32下载程序的五种方法_第69张图片

STM32下载程序的五种方法_第70张图片

STM32下载程序的五种方法_第71张图片

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

STM32下载程序的五种方法_第72张图片

6.3 程序下载

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

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

STM32下载程序的五种方法_第73张图片

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

STM32下载程序的五种方法_第74张图片

STM32下载程序的五种方法_第75张图片

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 文件在调试过程中非常有用,可以用于查看和分析程序的结构、变量信息等。


另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。

刷题 | LeetCode算法刷题神器,看完 BAT 随你挑!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

  • 程序员必备编程资料大全
  • 程序员必备软件资源

欢迎关注我的博客:良许嵌入式教程网,满满都是干货!

你可能感兴趣的:(STM32,linux,后端,互联网,服务器)