STM32 使用串口下载程序

STM32 使用串口下载程序

1.串口下载的原理

在这里插入图片描述

  • 在ROM区的0x0800 0000位置,存储的就是编译后的程序代码,你把什么程序写入到这个位置,STM32就执行什么样的程序。如果想使用串口下载程序的话,我们只需要把数据通过串口发送给STM32,STM32接收数据,然后刷新到0x0800 0000这一块位置就行了。但是接收并转存数据,这个过程本身也是程序,如果利用程序进行自我更新,这是一个问题。

就像是一个机器人,给自己换电池一样,换电池,需要先拆掉旧电池,再装上新电池,但是一旦把旧电池拆掉,机器人本身就无法工作了,这样之后装上新电池的工作就没法完成了,所以为了能让机器人换电池,我们还需要再额外做一个小机器人,需要换电池的时候,就启动这个小机器人,小机器人完成整个换电池的工作之后,再返回大机器人运行。

同理,STM32通过串口进行程序的自我更新,就需要这样一个小机器人,这个小机器人就是BootLoader,BootLoader是ST公司写好的一段程序代码,这段程序的存储位置,就是ROM区的最后,0x1FFF F000,这段区域叫做系统存储器,存储的是BootLoader程序,或者叫自举程序。用途是程序自我更新,串口下载。在更新过程中,BootLoader接收USART1数据,刷新到程序存储器Flash,这是主程序就处于瘫痪状态,更新好之后再启动主程序,执行新程序,这就是串口下载的流程。

1.1启动配置

在这里插入图片描述

  • 当Boot0 为0时,就是从主闪存,也就是0x0800 0000的位置开始运行
  • 当Boot0为1,Boot1为0时,就是从系统存储器,也就是0x1FFF F000开始运行
  • 当Boot0为1,Boot1为1时,就是从SRAM,也就是0x2000 0000开始运行

由于系统复位后,在SYSCLK的第四个上升沿,BOOT引脚的值将被锁存,所以说,每次切换Boot引脚之后,都要按一下复位。

2.每次串口下载都要切换跳线帽,如何解决

  • 1.STM32一键下载电路
  • 或者在FlyMcu中选择编程后执行,并且取消选择编程到FLASH时写选项字节
  • 在这里插入图片描述

在这里插入图片描述

由于其在软件上,人工加入了一条跳转指令(成功从0x0800 0000开始运行),这样就能执行主程序了,但是这样只是一次性的,复位之后,执行的程序仍然是BootLoader

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YRr YRr

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

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

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

打赏作者

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

抵扣说明:

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

余额充值