刚开端学习 STM32 的时分,许多小伙伴满怀热情买好了各种设备,但很快就遇到了第一个绊脚石——怎样将写好的代码烧进去这个黑乎乎的芯片~

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

五种办法不知道选哪种?直接看总结。

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

经过深入了解这些烧录办法,相信咱们将能够更好地理解 STM32 的烧录过程,挑选适宜的办法进行开发和调试。

0. 前置阅览

本文首发 良许嵌入式网www.lxlinux.net/e/ ,欢迎重视!

本文所涉及的源码及装置包如下(因为平台限制,请点击以下链接阅览原文下载):

www.lxlinux.net/e/stm32/fiv…

假如不知道怎样建立 STM32 编程环境,不知道怎样烧录 STM32 代码,能够阅览这篇文章:

www.lxlinux.net/e/stm32/stm…

新手小白假如连 MDK 的运用都不了解,那么能够经过下文先了解一下 MDK 的运用:

www.lxlinux.net/e/stm32/mdk…

文中所运用的芯片是 STM32F103C8T6 ,配套了一个工程模板,假如你需求自己建立一个工程模板,能够参阅下文:

www.lxlinux.net/e/stm32/cre…

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 元。常见的有以下两种:

    个人更引荐下面一款,因为它能够切换 VCC 输出电压,在对一些传感器进行独立测验的时分会比较便利。不过横竖也不贵,多买几个想怎样用就怎样用。

2.1 CH340驱动装置

2.2 FlyMcu装置

串口下载东西有许多,这儿引荐 FlyMcu 。

FlyMcu 是一款好用的 STM32 烧录程序软件,关于专业的单片机开发者来说应该十分适用,软件能够广泛地运用于电路编程和运用编程范畴,支撑进行编程、校验、读器材信息。

这款东西是国产的,咱们假如需求最新版的,能够去它们的官网下载:

www.mcuisp.com/

当然,用我供给的也行,横竖也是他们官网下载的。

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

2.3 硬件连线

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

电源接线没什么好说的,主要是串口这边,必定要注意穿插接线,也便是 CH340 转 TLL 东西的 TX 要接板子的 RX ,CH340 转 TLL 东西的 RX 要接板子的 TX ,千万不要接错,否则就不能烧进去!

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

2.4 程序下载

翻开 FlyMcu 。假如你们运用的是我上面引荐的 STM32F103C8T6 中心板,那么请下载 1. 装置包及驱动预备 我供给的模板工程,如下操作:

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

为什么要这么操作呢?

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

BOOT0 和 BOOT1 是用于设置 STM32 的发动办法的:

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

这儿是用 USB 下载, 也便是串口下载,所以挑选表中的第二个办法也便是 BOOT0 挑选 1, BOOT1 挑选 0

然后你就能够点击软件上的 开端编程 按钮,但你会发现,右边一向处于衔接状况。这个时分,只需你按一下板子上的 reset 按键(板子上唯一的一个按键),它就开端往下走了。

下载后记得把 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 接口与开发板进行通讯。一般也很廉价,七八元左右。

3.1 ST-Link驱动装置

3.2 装置MDK5

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

MDK5 能够在它们的官网上下载,网址如下:

www.keil.com/demo/eval/a…

当时最新版别是 MDK538A ,但新版并不意味着最好,或许会有一些奇奇怪怪的问题,也或许不稳定。

引荐咱们运用 MDK534,也是我目前所运用的版别,至今未出过什么问题。装置包现已在1. 装置包及驱动预备 为咱们供给了,接下来我就手把手教咱们在你们的电脑上装置 MDK5 。

双击我给咱们供给的装置包后,会出现以下界面,咱们跟着我的图片操作即可:

到此为止,MDK5 就装置完结了。

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

接下来就要装置固件包了。什么是固件包呢?因为 ST 公司生产了十分多的芯片,每颗芯片所需求的支撑文件都不相同,这些文件组合起来便是固件包。

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

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

www.keil.arm.com/packs/

因为咱们运用的板子是 STM32F103C8T6 ,属于 F1 系列,所以在查找框里查找 STM32F1 即可。假如咱们运用的是其它系列芯片,那就查找对应系列的关键词,不要傻乎乎都按下图查找哦~

相同的,因为服务器在国外,下载速度巨慢。咱们用我供给的文件就能够了,相同也是官网上下载的,原汁原味。链接在 1. 装置包及驱动预备 能够找到。

装置的办法很简单,只需求双击装置包即可,然后它就会主动识别固件包的目录,点击 Next ,然后等进度条走究竟就 OK 了。

3.3 程序编译

假如你们运用的是我上面引荐的 STM32F103C8T6 中心板,那么请下载 1. 装置包及驱动预备 我供给的模板工程,然后翻开这个工程。

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

  • 第一个按钮: Translate 便是翻译当下修改正的文件,阐明白点便是查看下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。
  • 第二个按钮: Build 便是编译当下修改正的文件,它包括了语法查看,链接动态库文件,生成可执行文件。
  • 第三个按钮: Rebuild 从头编译整个工程,跟 Build 这个按钮完结的功用是相同的,但有所不同的是它编译的是整个工程的一切文件,耗时巨大。

在实践工作中,咱们最经常运用的便是第二个按钮,别的两个用得不多,尤其是第一个。

3.4 硬件接线

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

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

在下面这张图里,棕色是 GND ,红色是 SWDIO ,黄色是 SWDCLK ,咱们能够对照着接线。

3.5 程序下载

在下载之前,请先按下面的过程做好装备。

到此为止,针对 MDK 的装备现已搞定了,现在就能够进行下载了。

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

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

程序下载成功之后,板子主动运转新代码,会看到 LED 灯距离 500 毫秒亮灭替换闪烁。

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装置

官网下载:

www.st.com/en/developm…

官网需求注册、填邮箱……怪费事的,所以主张直接拿我预备好的装置包( 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

4.2 程序下载

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

这儿需求挑选 hex 文件,假如你们运用的是我上面引荐的 STM32F103C8T6 中心板,能够下载 1. 装置包及驱动预备 我供给的模板工程,如下操作。想烧自己的代码要是没有 hex 文件的话能够用 MDK(Keil) 生成。

看到出现 “Verification…OK” 便是下载成功。

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

5.1 J-Link驱动装置

官网下载地址:

www.segger.com/downloads/j…

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

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

如下操作:

5.2 硬件连线

烧 STM32 只需用 4 条杜邦线就能够了,和 STM32 ST-LINK Utility 下载连线相同,选用SWD 接口方式,这儿的 VREF 便是电源正极。

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

整体连好长这样:

5.3 程序下载

运用 MDK5 翻开工程(这儿用的是我的模板工程),点击魔法棒,跟我操作。

一般这样设置就能够了,假如烧录失败,能够参阅 3.5 。

6. STVP下载

STVP 是很早的下载东西了,支撑 ST7 、 STM8 、 STM32 系列。说实话,这玩意从装置到运用都是太奶等级,又臭又长,真的不主张运用。。

  • Need: ST-Link 下载器

6.1 STVP装置

官网下载:

www.st.com/en/developm…

和 ST-LINK Utility 相同,官网需求注册、填邮箱……怪费事的,所以主张直接拿我预备好的装置包( 1. 装置包及驱动预备 ),也是官网下的。

装置过程也是一路 Next 就行,因为装置时我不能截屏了,所以拍几个关键过程出来。

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

6.3 程序下载

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

这儿以 ST-Link 下载器和 STM32F103C8T6 中心板为例:

弹出新窗口,如下操作,这儿翻开的是 1. 装置包及驱动预备 我供给的模板工程,咱们能够选自己的,要是 hex 文件,没有能够用 MDK(Keil) 生成。

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 随你挑!

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

引荐阅览:

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