STM32上的BOOT0和BOOT1介绍(整理)

STM32上的BOOT0和BOOT1介绍(整理)

  • STM32设置BOOT0和BOOT1的原因
  • 原理
  • 三种芯片内置的存储介质
  • 功能

STM32设置BOOT0和BOOT1的原因

当你对一款单片机进行软件编程时,可以通过USB线连接电脑和单片机,实现多次下载与调试,看似十分方便,但是,如果你想要实现单片机大幅度或者是大范围的移动时,将程序烧写进单片机,从而进行 脱机工作就显得尤为重要,所以便有了BOOT0和BOOT1这两个引脚。

原理

当我们下载好程序后,重启芯片,系统时钟的第四个上升沿,BOOT引脚的值将会被锁存,用户通过设置BOOT0和BOOT1的值来对单片机复位后的启动模式进行选择

三种芯片内置的存储介质

1、Main Flash memory:是32内置的Flash,是通过JTAG和SWD两种模式下下载的目标存储区,当芯片重启后,从此区域开始启动程序。
2、System memory:系统存储器,这种模式由厂家设置,一般是通过串口下载程序的目标存储区。一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:
Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader。
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中。
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动。
可以看到,利用串口下载程序还是比较的麻烦,需要跳帽跳来跳去的,非常的不注重用户体验。
3、Embedded Memory:内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

功能

BOOT0 BOOT1 功能
X 0 从用户闪存启动,正常的工作模式
0 1 从系统存储器启动,启动的程序由厂家设定
1 1 从内置SRAM启动,用于调试

其中:BOOT0=1,BOOT1=1的模式一般不使用,因为其掉电之后容易丢失,常用于调试、故障的局部诊断等方面。
BOOT0=0,BOOT1=0是最常用的模式。

注:BOOT0,BOOT1接地是要接10k的电阻

你可能感兴趣的:(STM32上的BOOT0和BOOT1介绍(整理))