如何使用串行端口将程序下载到STM32

电脑杂谈  发布时间:2020-12-11 09:07:39  来源:网络整理

flash鼠标擦除代码_flash鼠标擦除代码

前言

当我第一次学习STM32时,我不知道那里有一个调试器,因此我总是通过串行端口将程序下载到STM32。下载速度还不错,通常只需几秒钟。后来,我使用了调试器,该调试器可以在Keil环境中直接下载,并且还可以执行调试,因此以后很少使用串行端口下载程序。几天前,在uFUN试用小组中,我看到几个朋友在使用串行端口下载程序时遇到了各种问题,因此这里简要介绍了如何通过串行端口将程序下载到STM32。

STM32启动模式简介

从STM32参考手册中,您可以找到STM32的三种启动模式,可以通过BOOT0和BOOT1级别的不同组合进行选择。

flash鼠标擦除代码

关于这些模式的介绍,以下是我个人的理解:

主闪存启动模式:运行模式,程序在MCU上电时运行。

系统内存启动模式:串行下载模式。在上电之前,请先设置BOOT0 = 1和BOOT1 = 0,然后再通过串行端口下载程序。或者在开机时,设置BOOT0 = 1,BOOT1 = 0,然后按复位按钮,以便也可以通过串行端口下载程序。

SRAM启动模式:调试模式。如果仅修改代码的一小部分,则直接擦除整个Flash将会非常耗时,并且Flash擦除和写入的次数也受到限制。因此,您可以考虑从RAM启动代码以进行快速的程序调试,然后在程序调试完成后将程序下载到Flash。

某些朋友可能会遇到这种情况:该程序在首次下载时可以运行,但是在断电并重新启动后,该程序无法运行。在这种情况下,可能会将BOOT设置为串行下载模式,因此在断电后它不会自动运行。如果要在断电并重新启动后仍直接运行程序,则可以将BOOT设置为主闪存引导模式,即BOOT0 = 0。

安装USB串行端口驱动程序

flash鼠标擦除代码

flash鼠标擦除代码_flash鼠标擦除代码

在安装串行端口下载程序之前,如果未安装串行端口芯片的驱动程序,则计算机将无法识别串行端口。如上图所示,设备管理器中存在无法识别的设备。在安装串行端口驱动程序之前,首先确定开发板使用的串行芯片。我们的uFUN开发板使用CH340串行芯片。在这里,我提供了几种常用的串行芯片驱动程序的下载地址。如果使用其他串行芯片,则必须安装相应的驱动程序:

如果驱动程序安装成功,则可以在设备管理器中看到与该设备相对应的串行端口号:

flash鼠标擦除代码

将启动模式设置为系统存储启动模式

在上电之前,将BOOT0 = 1和BOOT1 = 0设置。或在开机后,设置BOOT0 = 1,BOOT1 = 0,然后按复位按钮。可以将这两种方法都设置为系统存储启动模式,以通过串行端口下载程序。

请参阅uFUN的:

flash鼠标擦除代码

可以看到BOOT的选择是通过DIP开关实现的。 S1对应于BOOT1,S2对应于BOOT0,开关处于ON状态,BOOT直接接地,为低电平0;开关处于OFF状态,BOOT上拉至高电平1,即:

flash鼠标擦除代码

这一点与[uFun开发板快速入门指南V10]中的介绍有所不同,这是手动@Administrator检查。

flash鼠标擦除代码

对于uFUN开发板,要切换到串行下载模式,只需要设置S1 = ON,即BOOT1 = 0,S2 = OFF,即BOOT0 = 1,就可以继续下一个程序下载。如下图所示:

flash鼠标擦除代码_flash鼠标擦除代码

flash鼠标擦除代码

使用FlyMCU下载程序

主要有两种STM32串行下载软件,一种是由中国人开发的FlyMCU,另一种是ST官方的Flash Loader演示程序。我将介绍这两种软件的下载方法,但我个人认为FlyMCU易于使用。

flash鼠标擦除代码

FlyMCU是由MCU编程网络开发的串行下载软件。我正在使用V0.188版本。主界面如上图所示。如果要获取该软件的最新版本,可以从官方网站下载。我在官方网站上看了一下,并发布了免费的免费ISP软件,该软件可以支持STM32和LPC2xxx程序的下载。如果您有从事LPC2xxx MCU开发的朋友,并且没有调试器,则可以尝试此软件。好的,我们不多说,让我们看看如何使用FlyMCU通过串行端口将程序下载到uFUN开发板上。

您可以从官方网站下载最新版本,或者下载我使用的FlyMCU V0.188版本。

确保已将启动模式设置为串行下载模式,BOOT1 = 0,BOOT0 = 1,即S1 = ON,S2 = OFF,然后将开发板连接到计算机并打开电源,打开软件,然后在“端口”菜单下选择相应的COM端口。

flash鼠标擦除代码

加载生成的十六进制文件,并在右侧进行编程之前检查重新加载的文件,这样就不必每次都下载程序并重新加载十六进制文件。

flash鼠标擦除代码

选中编程后验证和执行的两个选项,编程为FLASH时取消选中选项字节,然后单击“开始编程”按钮。如果下载正常,则下载信息将在右侧输出。如果下载成功运行,最后输出:

共写入8KB,进度100%,耗时4750毫秒
成功从08000000开始运行

flash鼠标擦除代码_flash鼠标擦除代码

表示该程序已成功下载。

flash鼠标擦除代码

在编程后执行:此选项意味着程序将在下载后自动运行,而无需将BOOT切换到主闪存引导模式。但是,在关闭电源并重新启动后,该程序将不会直接运行。如果要在开机后立即运行该程序,则还需要将BOOT设置回主闪存启动模式BOOT0 = 0,即S2 = ON。

编程为FLASH时写选项字节:请勿选中此选项。如果选中,则可能导致下载失败,操作失败,甚至导致芯片锁定。因此,不得选中此选项。

使用Flash Loader演示程序下载

Flash Loader Demonstrator是ST的官方串行端口下载软件,可用于STM32系列微控制器的程序下载。官方网站地址:STM32 Flash loader演示器

通过上述官方网站链接,您可以下载最新版本的Flash Loader演示程序2.8.0,但是如果要下载,则需要先登录到ST官方网站帐户。不想注册帐户,可以使用以下链接下载,这是我之前发现的版本,版本为2.6.0,但它不会影响程序的下载:Flash_Loader_Demonstrator_v 2.6.0_Setup

FlyMCU和FlyMCU之间的区别在于,要下载程序,必须将其连接到芯片并等待一系列步骤来完成下载。这就是为什么我认为该软件不易于使用。

打开软件,选择板子串口对应的COM号,可以将波特率调整为最高,因此下载速度会更快,但是有些串口芯片不能支持很高的波特率。

flash鼠标擦除代码

如果与电路板的连接成功,将检测到目标STM32芯片的Flash大小。我们的uFUN开发板使用STM32F10RC,256KB闪存。

flash鼠标擦除代码

在此步骤中,您可以查看Flash每页的当前读写状态。绿色锁表示读/写。如果芯片受到读保护或写保护,则某些页面将显示为红色锁。

![](

flash鼠标擦除代码

首先加载十六进制文件,然后可以选择以下擦除选项:擦除必要的页面,不擦除或完全擦除芯片,只需在此处保留默认配置,然后单击下一步下载程序即可。

flash鼠标擦除代码

如果下载成功,将显示

flash鼠标擦除代码

在这里,如果单击“上一步”,则无法第二次下载程序。您必须重新打开并连接才能下载。

flash鼠标擦除代码

此外,除了下载STM32系列MCU程序外,它还支持ST的STM8的程序下载。

摘要

STM32只能通过串行端口1(即PA9、PA10)下载程序,其他串行端口不具有此功能,因此,如果您设计自己的板卡,则应注意这一点。某些联网设备的固件更新也是基于此原理,即将WIFI模块连接到串口1即可实现程序的更新。当然,具体的实现仍然非常复杂,它还涉及到Bootloader程序的开发,这是另一方面。尽管STM32的F4系列也可以使用串行端口下载程序,但擦除时间非常长,仍然超过十秒钟。建议每个人都尝试使用调试器来下载和调试程序,这既方便又易于使用。这是MCU开发的必备条件!

参考历史记录中的选定文章

欢迎关注我的个人博客


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-339676-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 安素玲
        安素玲

        #吴亦凡#感动我会在

        • 李霞
          李霞

          话说美国就是轻视你伊拉克

      热点图片
      拼命载入中...