如何使用串口来给STM32下载程序

前言

第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成。后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进行在线调试,所以后来就很少使用串口来下载程序了。前几天在uFUN试用群里看到有几个朋友在使用串口下载程序时,遇到了各种各样的问题,所以在这里简单介绍一下如何通过串口来给STM32下载程序。

STM32的启动模式介绍

从STM32参考手册上,可以查阅到,STM32的启动模式,共有下列三种,可以通过BOOT0和BOOT1电平的不同组合,来选择不同的启动模式。

关于这几种模式的介绍,下面是我个人的理解:

主闪存启动模式:即运行模式,单片机上电即运行程序。

系统存储器启动模式:即串口下载模式。上电之前要先设置BOOT0=1,BOOT1=0,然后才能通过串口下载程序。或者在已经上电的情况下,设置BOOT0=1,BOOT1=0,然后按一下复位键,这样也能通过串口下载程序。

SRAM启动模式:即调试模式。假如我只修改了代码中一个小小的地方,如果直接擦除整个Flash,比较费时,而且Flash的擦写次数也是有限制的。所以可以考虑从RAM中启动代码,用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。

有的朋友可能遇到过这种情况:程序第一次下载的时候可以运行,但是掉电重启之后,程序就不能运行了。这种情况就有可能是把BOOT设置成了串口下载模式,所以掉电之后,并不会自动运行。如果想要即使掉电重启也能直接运行程序,可以把BOOT设置为主闪存启动模式,即BOOT0=0。

安装USB串口驱动

在进行串口下载程序之前,如果串口芯片的驱动程序没有安装,那么电脑不能识别串口,如上图所示,设备管理器里有一个未识别的设备。在安装串口驱动之前,要先确定开发板所使用的串口芯片,我们的uFUN开发板使用的是CH340串口芯片。这里我提供了几个常用串口芯片的驱动程序下载地址,大家如果使用其他的串口芯片,要安装对应的驱动程序:

如果驱动安装成功,在设备管理器里可以看到该设备对应的串口号:

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

上电前,设置BOOT0=1,BOOT1=0。或者是在上电后,设置BOOT0=1,BOOT1=0之后,然后按一下复位按键。这两种方式都可以让设置为系统存储启动模式,从而通过串口下载程序。

参考uFUN的原理图:

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

这一点和【uFun 开发板快速入门指南 V10】介绍的有所出入,在这里手动@管理员核对一下。

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

使用FlyMCU下载程序

STM32串口下载软件主要两个,一个是国人开发的FlyMCU,另一个是ST官方的Flash Loader Demonstrator,这两个软件的下载方法我都会介绍,不过我个人认为FlyMCU更简单易用一些。

FlyMCU是由单片机在线编程网开发的一款串口下载软件,我使用的是V0.188版本,主界面如上图所示,如果大家想获取最新版的软件可以到官方网站下载。我去官网上看了一下,又发布了免费的Free ISP软件,可以支持STM32和LPC2xxx程序的下载。如果有朋友从事LPC2xxx MCU的开发,而又没有调试器,可以尝试一下这个软件。 好了,话不多说,下面来看一下如何使用FlyMCU通过串口来给uFUN开发板下载程序。

  • 1.软件的下载

可以到官方网站下载最新版,或者是下载我使用的这个版本:FlyMCU V0.188

关注公众号:【电子电路开发学习】,后台回复【FlyMcu】获取STM32串口下载软件。

  • 2.选择COM号

确保启动模式已经设置为串口下载模式,BOOT1=0,BOOT0=1,即S1=ON,S2=OFF,然后把开发板连接电脑上电,打开软件,选择PORT菜单下对应的COM口。

  • 3.加载hex文件

加载生成的hex文件,并勾选右边的编程前重装文件,这样,就不用每次下载程序,重新加载hex文件了。

  • 4.下载程序

勾选校验编程后执行这两个选项,取消勾选编程到FLASH时写选项字节,然后点击开始编程按钮,如果正常下载的话,右边会输出下载的信息,如果成功下载并运行,最后会输出:

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

表示程序成功下载。

编程后执行:这个选项是指,程序下载完成后自动运行,而不用切换到BOOT到主闪存启动模式,但是,掉电重启,程序不会直接运行。如果要上电即运行此程序,还需要把BOOT设置回主闪存启动模式BOOT0=0,即S2=ON。

编程到FLASH时写选项字节:这个选项不要勾选,如果勾选了,可能会导致下载失败,或者是运行失败,甚至会导致芯片的锁死。所以,这个选项一定不要勾选。

使用Flash Loader Demonstrator下载

Flash Loader Demonstrator是ST官方的串口下载软件,可以用于STM32系列单片机的程序下载,官网地址:STM32 Flash loader demonstrator

  • 1.软件的下载

通过上面的官网链接,可以下载到最新2.8.0版本的Flash Loader Demonstrator,但是如果要想下载,需要先登陆ST官网的账号,如果不想注册账号的话,可以通过下面的链接下载,这个是我之前找的,版本是2.6.0的,但不影响程序的下载:Flash_Loader_Demonstrator_v2.6.0_Setup

  • 2.连接芯片

和FlyMCU不同的是,要想下载程序,必须要经过连接芯片,等一系列步骤才能完成下载,这一点,也是我觉得这个软件不好用的原因。

打开软件,选择板子串口对应的COM号,波特率可以调成最高,这样下载速度会快一点,但是有的串口芯片,不能支持很高的波特率。

如果和板子连接成功的话,会检测到目标STM32芯片的Flash的大小,我们的uFUN开发板是使用STM32F10RC,256KB Flash。

这一步,可以查看当前Flash各页的读写情况,绿色的锁表示可读/可写,如果芯片被加了读保护,或者写保护,部分页会显示为红色的锁。

![](

  • 3.程序的下载

先加载hex文件,下面的擦除选项可以选择:擦除必要的页、不擦除或者是全片擦除,这里保持默认配置就行,直接点击Next进行程序的下载。

如果下载成功,会显示

这里如果点击Back是不能进行第二次程序下载的,必须重新打开,连接,才能下载。

另外,除了STM32系列单片机程序的下载,它还支持ST公司的STM8的程序下载。

总结

STM32只能通过串口1进行程序下载,即PA9、PA10,其他串口都不具备这个功能,所以,如果自己设计板子,要注意这一点。一些联网的设备进行固件更新也是这个原理,即把WIFI模块,连接到串口1,实现程序的在线升级。当然,具体的实现还是很复杂的,而且还涉及到Bootloader程序的开发,这就是另外一个方面了。虽然STM32的F4系列也可以使用串口下载程序,但擦除时间很长,有十几秒种。推荐大家尽量还是使用调试器来进行程序的下载和调试,方便又好用,单片机开发必备!

参考资料

(0)

相关推荐

  • STM32固件IAP程序实现

    STM32固件IAP程序实现

  • STM32自举程序原理和使用

    很很多单片机都有自举程序,像支持STC单片机使用串口下载,这种其实也是单片机内部集成了一段自举程序. 那你,你了解自举程序吗?下面结合STM32给大家分享一下关于自举程序的知识. 1关于自举程序 ST ...

  • STM32F1下载程序方法

    插电,开机,你就可以看见板子自带的演示例程,一般显示这样的板子都是全新的哦 下载程序方法 STM32F1主要支持三种下载方式哦 1.ISP下载(串口) 2.JTAG仿真器下载 3.在线IAP下载 IS ...

  • STM32CubeMX STM32F1系列开发时遇到的四个问题及解决方案分享

    (图片为小马哥TJ-STM32F103C8最小系统) 这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ...

  • STM32单片机的ISP使用方法

    干了七八年51单片机和CPLD,最近几年又干STM32单片机和FPGA,都说30而立40不惑,现在30几还是没立,估计40几还是会惑,经常在网上闲吹久了,还是写点实用的东西,全当自己写的笔记,到40几 ...

  • 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么

    说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...

  • 浅谈STM32的启动过程

    分享这篇文章,谈一下STM32启动流程.如果读者朋友已经有过汇编相关基础,能够够好理解本文内容.汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层. STM32三种启动模式 ...

  • 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法!

    用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink.串口下载方法和51差不多不多说,用jlink下载时接口引脚太多导致接口很大,很占pcb的面积,在此我就针对这个问题清晰的 ...

  • plc怎么在线修改程序,就是不用停止运行就可以下载程序的?

    plc怎么现在修改程序,不用停止运行就可以下载程序的,我们知道把程序下载到plc中都是需要先停止运行,如下图三菱plc在线下载程序时都要求停止然后执行写入,但在我们实际应用当中可能会遇到不能停止必须要 ...

  • 三菱PLC用以太网的方式下载程序

    三菱PLC用以太网的方式下载程序 龙丰理念:"让千万电工.初学者,掌握PLC编程.从事编程工作!" 掌握内容:三菱PLC用以太网的方式下载程序的方法 一.适用于FX3G/3GC.F ...

  • 网页上的视频无法下载?教你一招下载#程序员 #电脑知识

    网页上的视频无法下载?教你一招下载#程序员 #电脑知识

  • 【基础知识】三菱FX系列PLC如何上传下载程序

    很多学员经常问到电脑和三菱FX系列PLC通讯不上这类问题.以下做个详细的步骤给大家. 第一步: 用专用的编程线链接上电脑和PLC.(一定要用三菱专用的编程电缆线,有初学者会拿其他品牌的编程电缆线来用. ...

  • 使用U盘来给精智(Comfort)屏下载程序

    软件要求 如果你使用U盘来给精智(Comfort)屏做下载,所使用的Portal软件是WinCC V14或者更高的版本. 需要注意项目名称和设备名称不能含有中文. 博途(Portal)软件中设置 在博 ...

  • 没有通讯线如何为PLC下载程序

    10款热门电工仿真等软件,免费下载!

  • S7-200SMART PLC如何通过(485口进行上下载程序)

    学过S7-200SMART PLC的伙伴们肯定知道S7-200SMART PLC是通过以太网口来进行通信和上下载程序,那么问题来了?可不可以使用S7-200 SMART CPU 集成的RS485 端口 ...