stm32学习笔记---FlyMcu串口下载&STLINK Utility(理论部分)

目录

FlyMcu串口下载

串口下载的流程

研究两个问题

第一个问题,串口下载的原理

第二个问题,有没有办法不用每次下载都要切换跳线帽

软件功能介绍

读flash

清除芯片

读器件信息

选项字节

STLINK Utility下载

软件安装步骤

下载程序的流程

选项字节

STLINK固件更新


声明:本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记,我之所以记录下来是为了方便自己日后复习。如果你也是跟着江科大的视频学习的,可以配套本专栏食用,如有问题可以QQ交流群:963138186

本节主要是教大家使用两个小软件,这两个软件也是比较常用的,里面有很多有意思的功能。

这两个软件的领取链接:

链接:https://pan.baidu.com/s/10woYnveR7g_5_mv0hSQ7Zw

提取码:hgiy

FlyMcu串口下载

第一个是FlyMcu,这个软件可以通过串口给STM32下载程序,如果你没有STLINK就可以用这个软件通过串口下载程序。第二个软件是STLINK utility,这个软件是配合STLINK使用的一个工具,可以通过STLINK给STM32下载程序,也可以进行一些其他的操作。

总的来说,这两个软件的功能差不多都可以下载程序。FlyMcu是串口下载,STLINK utility是STLINK下载。

我们先看一下FlyMcu程序烧录软件,打开软件,这个软件是绿色软件,直接打开就能运行,不需要安装。

这个FlyMcu就跟个51单片机的STC-ISP的用途是一样的,都是串口下载。

串口下载的流程

接下来演示一下串口下载的流程。

首先硬件这里我们需要连接一个串口的电路,接法和前几小节是一样的

这个电路要能保证USART1和电脑进行串口通信。这里必须要是USART1,因为我们这个芯片的串口下载只适配了USART1,接在其他USART上是不行的。

然后在软件上,随便打开一个示例代码,比如这里拖出来了一个LED闪烁的代码作为演示。

为了实现串口下载,我们需要配置工程生成一个hex文件。

把这个创建hex文件的勾勾上,点击OK

点击编译一下,下方一定要有这句话

看到这句话则表示编译没问题。

我们就可以打开工程目录,在这个objects文件夹下,找到我们刚才生成的hex文件,这就是我们串口下载所需要的程序文件,这部分流程和51单片机里是一样的。

接下来我们就可以用FlyMcu下载程序了。

首先上面先点搜索串口,

然后port这里选择我们串口通信的com号

dps波特率可以保持默认的115200,这一部分和串口助手是一样的,

接着选择程序文件,点击这里三个点的按钮。

找到我们刚才生成的hex文件,在这个工程目录objects文件夹里选中。

打开之后,下面这些其他的配置,我们暂时先保持默认,目前对下载程序影响不大,等会儿再细说。

然后在开始编程之前,我们还需要配置boot引脚,让STM32执行BootLoader程序,

否则的话点击开始编程,它会一直卡在这个位置,

如何进入BootLoader?先演示流程,等会儿再解释。

第一步找到这里的跳线帽,这两个跳线帽是用来配置Boot引脚的,把这里上面一个跳线帽,也就是配置Boot0引脚的跳线帽拔下来,然后插在右边两个针脚配置boot0为1。

第二步,按一下复位键,让程序重新开始运行。

这里切换boot引脚之后,一定要再按下复位键。因为STM32只有在刚复位时才会读取boot引脚,程序运行之后切换boot引脚是无效的。

这样芯片就进入BootLoader的程序了。

进入BootLoader的程序之后,STM32执行的程序就是不断接收USART1的数据,刷新到主闪存。

然后再回到FlyMcu软件,点击开始编程,这时就可以看到下载过程成功运行。

最后显示下载成功,

这样我们这个led闪烁的程序就通过BootLoader成功刷新到主闪存里了。

回到STM32,目前led还没有亮起来。

这是因为目前STM32还在执行BootLoader的的刷机程序,我们还需要把boot引脚换回来,

然后按一下复位,

可以看到LED闪烁程序运行正常。

研究两个问题

接下来我们来研究两个问题。

第一个问题,boot引脚是干什么的?,为什么这样配置?Bootloader又是干什么的?串口下载的原理是什么?

第二个问题,每次下载程序都要拔插两遍跳线帽,太麻烦了,有没有什么解决方法?

第一个问题,串口下载的原理

先看一下第一个问题,串口下载的原理。之前这里我们讲过了STM32的存储器印象,

在ROM区的0800位置存储的就是编译后的程序代码,把什么程序写到这个位置,STM32就执行什么样的程序,如果想使用串口下载程序的话,我们只需要把程序数据通过串口发给STM32,STM32接收数据,然后刷新到0800这一块位置就行了。

但是接收并转存数据这个过程本身也是程序,如何利用程序实现自我更新,这是一个问题。就像是一个机器人给自己换电池一样。换电池需要先拆掉旧电池,再装上新电池。但是一旦把旧电池拆掉,机器人本身就无法工作了。这样之后装上新电池的工作就没法完成了。所以为了能让机器人自己换电池,我们还需要再额外做一个小机器人,需要换电池的时候,就启动这个小机器人。小机器人完成整个换电池工作之后,再返回大机器人运行。

同理STM32通过串口进行程序的自我更新,就需要这样一个小机器人。这个小机器人就是BootLoader。BootLoader是st公司写好的一段程序代码,这段程序的存储位置就是ROM区的最后1FFF F000,这段区域叫做系统存储器,存储的是BootLoader程序,或者叫自举程序,用途是程序自我更新,串口下载。

在更新过程中,BootLoader接收USART1数据刷新到程序存储器。这时,主程序就处于瘫痪状态,更新好之后,再启动主程序,执行新程序。这就是串口下载的流程。

如果给手机或电脑重装个系统的话,就可以类比一下。这个BootLoader就相当于是手机的刷机模式或者电脑的PE系统,是辅助主程序进行自我更新的。

如何启动大机器人,如何启动小机器人?这就由boot引脚来决定,这里有一个启动配置

当boot0为0时,就是主闪存,也就是0800的位置开始运行,启动大机器人。

当boot0为1,Boot1为0时,就是从系统存储器,也就是1FFF F000开始运行,启动小机器人。

最后还有一个boot0和boot1都为1,从sram,也就是2000开始运行,这个比较高级,我们暂时不用。

然后下面写了在系统复位后SYCLK的第四个上升沿Boot引脚的值将被锁定。所以说每次切换boot引脚之后,都要按一下复位。

到这里串口下载的原理就讲完了。

第二个问题,有没有办法不用每次下载都要切换跳线帽

接下来我们来研究一下第二个问题,每次下载都要切换跳线帽,太麻烦了,怎么解决?

刚才我们说了,想要程序自我更新,就必须有一个切换小机器人的过程,boot0引脚和RST复位引脚必须得有高低电平变化,能不能接两根线,当电脑点击下载时,自动设置一下boot0引脚和RST的电平?答案是可行的,我们可以看一下这个串口模块的电路。

这里除了TXD和RXD用于通信的引脚。还有RTS、CTS和DTR和DSR这些引脚都是流控的引脚,我们不使用流控,可以把它们当做普通的GPIO来控制。

其中RTS和DTR是输出引脚,我们可以用这两个引脚来控制Boot0和RST。当然在外围还需要设计一个控制电路,一般可以用两个三极管开关来进行控制。有关电路部分,大家可以网上搜一下STM32一键下载电路,里面都有设计方案和解释。

当我们这个串口具备一键下载电路之后,就不需要再频繁切换跳线帽和按复位键了,非常方便。

回到FlyMcu,这下面有个下拉框,就是用来配置DTR和RTS的,是高电平复位,还是低电平复位等等配置。

这些配置需要根据一键下载电路来选,一般最常用的配置是DTR的低电平复位,RTS高电平进BootLoader。

我们这个硬件目前没有一键下载电路,所以还是得手动切换跳线帽。这里的下拉框选择哪个就无所谓了。

这里的信息可以看到,选好之后,下载之前会给DTR和RTS置高低电平,以此切换大机器人和小机器人工作。

没有一键下载电路,我们还有一个缓招可以使用,就是勾上这里的编程后执行,

这样试一下,先切换跳线帽,复位,进入BootLoader,led就没有闪烁了。

如果选择了编程后执行,需要去掉选项字节的这个勾,要不然下载之后会提示执行失败,

我们去掉一下,点击开始编程,下载完成,不需要我们换回跳线帽,这时程序直接就运行了,LED就闪烁了。

为什么?

我们看一下这里这里多了一条:成功从0800开始运行。

这就是在软件上人工加入了一条跳转指令,这样就能执行主程序了,但是这样只是一次性的。

此时我们按一下复位键,LED不亮,程序仍然是BootLoader,不过这样也可以省很多步骤。我们可以切换到BootLoader,不断的进行下载调试,然后调试完成之后再切换回主程序,这样就只需要最开始和最后切换一下跳线帽就行了。

接下来我们继续来探索一下这个软件,这里面还有很多有意思的东西。

软件功能介绍

读flash

首先是这个读flash,

我们点一下,然后放到桌面,起个名字led,保存,

这样就可以把芯片里的程序读出来,现在提示读取完成。

此时你的桌面上就出现了程序文件,

这个功能能帮助我们干什么呢?

比如你看到别人用STM32做了一个产品,你觉得不错,就可以抄一下它的PCB板,然后程序文件又可以通过这个软件读出来,这样就可以大批量山寨别人的产品了。

不过STM32也可以配置读保护,这个等会儿再说。

但是反过来,如果你开发产品不注意这个问题的话,是不是一不小心程序就泄露了!

我们看一下读出来的这个文件,这个文件是.bin格式的里面记录的就是STM320800开始存储的程序数据bin格式是没有地址信息的原始数据文件。我们之前生成的hex文件是有地址信息的。不过,作为记录程序代码的文件,这两种格式的作用其实都是一样的。

这里还有一个问题,就是这个FlyMcu下载的时候只能选择hex文件。如果选择bin文件的话。下载就会报一个这样的错误。

但是它读出来只能选bin文件读出来的,bin文件不能再下载回去了。可能是软件设计的时候,没考虑到这个功能。

不过等会儿我们介绍STLINK utility的时候,这两个文件就都可以选择了。

清除芯片

接下来看下这个清除芯片的功能

点击这个清除芯片按钮,这可以把主程序区域全部擦除,擦除之后所有的数据都是FF。

读器件信息

之后点击读器件信息,

这时会把芯片的序列号等信息读出来。

然后这里显示这个芯片的flash容量是256K,但其实我们这个C8T6芯片的标称flash容量是64K,属于中容量产品。这里读出来却是256K,直接成大容量产品了。具体原因大家可以去了解一下,但是这个问题并不是很大。

选项字节

最后我们再来研究一下这个选项字节,

选项字节也是ROM区最后的一小块存储单元,用途是存储一些独立于程序代码的配置参数。

究竟是哪些参数?有什么作用?

在这里就可以看到了,点击设置选项字节的按钮,选择STM32F1的这一项。

这个界面展示的就是选项字节里面的参数了,

第一块就是读保护。刚才我们说了,如果你做产品不开启读保护别人,很容易就把你的程序偷走了。所以为了保护程序的安全,选项字节里就有一个参数,可以配置读保护。这里可以看到设成A5允许读出,设成FF阻止读出。

注意如果阻止读再回到keil下载程序时就会失败。如果因为读保护导致下载失败需要再到这个地方来取消读保护取消一下就正常了。

另外在取消读保护时会同时清空芯片的程序这样程序就不会被偷走了这就是读保护功能。

接着下面还有一些硬件选项字节,其中包括看门狗,停机和待机模式不产生复位,还有几位用户应该大概也许可以使用。然后是用户数据字节,这些东西如果你有需求的话可以自己使用。

选项字节里面的参数有什么好处?

  • 选项字节的数据相当于是世外桃源无论程序怎么更新选项字节的数据都可以不变你可以用这些字节来存储不随程序变化而变化的参数。
  • 另外选项字节还有一个好处,就是可以用上位机很方便的修改。比如我们这个FlyMcu或者STLINK utility,在上位机里可以直接修改选项字节的内容,可以用作一些产品中可供用户配置的参数。

然后继续看最后一项,就是写保护,

这里可以对flash的每几个页单独进行写保护。比如在主程序的最后几页写了一些自定的数据,不想在下载的时候被擦除了,就可以把最后几页设置写保护锁起来,设置写保护之后就无法再写了。如果想再次写入的话,解除写保护就行了。

另外注意一下设置写保护之后再下载,如果需要写入保护区的话就会出错。

比如把最前面几页写保护了,下载一次之后再下载,肯定就会出错。

这个软件设计不能单独写入选项字节,只能下载flash,顺便写入选项字节。但写保护了,下载不了。下载不了就不能解除写保护,形成死循环。

不过我们等会儿讲另一个软件的时候,就可以单独配置选项字节,就可以解决这个问题了。

以上就是选项字节的所有内容,总共就是四大块,读保护、写保护、硬件参数和用户参数。

配置好之后可以点击采用这个设置。

然后把编程到flash时,写选项字节勾上

在执行正常的下载流程就能更新选项字节的配置了。

然后,我们就来看下一个软件。

STLINK Utility下载

软件安装步骤

STLINK utility这个软件是需要安装的,这是一个安装包,直接双击安装。

里面直接下一步----yes----安装路径可以指定一下或者直接默认路径也没问题----下一步----最后提示安装STLINK的驱动,直接点是就行了----完成----finish

安装之后,桌面就会出现一个软件图标,双击打开这就是软件的主界面。

首先演示一下,用这个软件下载程序的流程。

下载程序的流程

首先硬件这部分只需要把STLINK连接好就行了,串口可以不接。

然后跳线帽恢复成两个,都在最左边。

按下复位,之后点击这个按钮进行连接。

连接好之后,这里就会出现一些器件信息了。

下面这个大框框展示的就是STM32里面0800开始的程序数据。

目前这个芯片刚被查除过,所以数据全是FF。

如果点击这个保存,就可以把这个程序给存起来,可以选择保存为hex或者bin文件。

点击这个按钮,就是断开链接,

点击这个橡皮擦就是擦除芯片

如果要下载程序的话,先点第一个按钮打开文件,这里文件类型支持hex和bin。

我们可以打开刚才读出来的bin文件,然后点击这个编程按钮,这一栏显示的就是程序文件的路径。

也可以在这里直接打开要下载的程序文件,之后点击start开始下载。

下载完成之后,我们看到led闪烁

这就是STLINK utility下载程序的流程,和keil内置的下载基本是一样的,非常简单。

选项字节

然后再讲一下这个软件选项字节的配置,

可以点击target

这就可以打开选项字节的配置页面了,选项字节的内容和刚才讲的一样。

第一块就是读保护,可以使能或失能。第二块也是硬件参数,这些灰色的选项,我们这个型号的芯片没有。之后就是第三块用户参数。第四块是写保护,内容都一样。

这里配置好之后,直接点击下方的apply,就能直接单独更改选项字节的参数了,不像FlyMcu,必须要下载程序,顺便更新选项字节。

所以如果有芯片被读保护,或者写保护锁住了,就可以到这个地方来解除保护。

这就是这个软件的选项指节配置。

STLINK固件更新

最后再给大家介绍一个STLINK固件更新的功能。

我们可以点击STLINK ,然后选择第一个

然后打开这个界面,就是给STLINK更新固件的

然后点击这里的connect连接,

这里提示重启一下

点击确定后,拔掉板子的STLINK重新插,插好之后点击连接。

可以看到目前这个STLINK的固件是J29.S7。

最新的固件是J37.S7,如果要升级的话,点yes就能给STLINK升级固件了,

需要升级的话,可以到这里来看看。

不过如果你使用没问题的话,也不需要经常更新,能用就行。

内容到这里就结束了,希望能给大家之后的学习和应用带来帮助,下节继续。

QQ交流群:963138186

本篇就到这里,下篇继续!欢迎点击下方订阅本专栏↓↓↓

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ​ STM32-STLink是一款常见的STM32单片机的USB调试工具,它可以方便地进行芯片的程序下载、烧录、调试和监测工作。在使用STM32-STLink进行调试工作前,需要先安装STM32-STLink驱动。 STM32-STLink驱动可以在ST官网或软件开发社区中获取。在安装驱动前需要确保电脑已经连接上STM32-STLink,并且已经准备好了相应的开发环境。建议先卸载旧版本的驱动再进行安装。 具体操作步骤如下: 1. 连接STM32-STLink到电脑,确保正常供电和通信。 2. 安装驱动,可以从ST官网或者软件开发社区中下载最新驱动程序。 3. 解压下载的驱动程序,双击运行安装程序。 4. 驱动安装过程中需要注意选择与自己操作系统版本相对应的驱动程序,勾选“核心组件”和“驱动程序”选项,进行安装。 5. 安装完成后,重启电脑,确认驱动程序已经成功安装。 6. 打开开发环境,并连接STM32-STLink,进行调试工作。在调试过程中,可以通过STLink Utility等工具进行芯片的操作。 总之,STM32-STLink驱动是STM32单片机开发必备的驱动程序之一。通过安装该驱动,可以方便地进行芯片的调试工作和程序烧录操作。 ### 回答2: stm32-stlink驱动是一种用于连接STM32单片机与电脑的驱动。STM32是一种低功耗、高性能的32位微控制器,而stlink是一种芯片级调试工具,用于将计算机与STM32单片机连接起来,进行程序的调试和下载。由于stm32-stlink驱动具备高性能、可靠性和灵活性等优势,因此在计算机与STM32单片机之间的数据传输过程中发挥了重要作用。 stm32-stlink驱动可以实现多种不同的功能。例如,在调试过程中,它可以帮助开发者调试程序,并实时监测STM32单片机的运行情况。此外,该驱动还可以实现对单片机的程序下载、烧录、刷写等操作,方便开发者进行快速迭代和测试。 除了实现上述功能之外,stm32-stlink驱动还具备多种其他特点。例如,该驱动可以长时间稳定运行,且不会对系统稳定性产生不利影响。此外,该驱动还具备自动适配的能力,可以适应不同版本的STM32单片机。 在使用stm32-stlink驱动之前,开发者需要根据自己的需要进行安装和配置。具体来说,需要下载适合自己系统版本的stm32-stlink驱动,并在电脑上安装。此外,在进行开发过程中,开发者还需要根据需要对该驱动进行相应的设置和调整,以保障程序的正常运行。 总的来说,stm32-stlink驱动是一种实现STM32单片机与电脑之间数据传输的重要工具,具备多种优势和特点。在进行相关开发工作时,合理配置和使用该驱动可以极大地提高开发效率和程序稳定性。 ### 回答3: STM32-STLINK驱动是用于连接计算机和STM32微控制器开发板之间的软件程序。STM32-STLINK驱动可用于下载代码,调试和仿真微控制器。STM32-STLINK驱动由STMicroelectronics提供,并且是免费提供的。该驱动程序可以在Windows和Linux操作系统上使用,并且支持多种开发工具,例如Keil,IAR和Atollic。 在使用STM32-STLINK驱动之前,需要先将开发板与计算机连接。连接过程可以通过USB连接或JTAG/SWD接口完成。当前,STMicroelectronics生产的大多数STM32微控制器都具有内置的ST-LINK / V2-1调试器,因此无需单独购买ST-LINK外设。只需使用USB线缆将STM32板连接到计算机上,即可使用STM32-STLINK驱动。 一旦STM32开发板和计算机连接成功并且安装了STM32-STLINK驱动,就可以开始进行下载、调试和仿真微控制器的工作了。STM32-STLINK驱动提供了基本的调试工具,例如设置断点、查看变量和跟踪程序执行等功能,以帮助开发人员进行程序调试。此外,该驱动程序还支持许多高级功能,例如实时追踪、功耗分析和定时器分析等,以帮助开发人员更深入地了解和优化代码。 综上所述,STM32-STLINK驱动是连接STM32微控制器和计算机之间的关键软件程序,用于下载、调试和仿真微控制器。它具有易于使用和灵活的优点,是STM32开发的重要工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vera工程师养成记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值