STM32:BOOT0与BOOT1的对比

文章目录

  • 前言
  • 一、思维导图
  • 二、注意事项
  • 1.针对BOOT0和BOOT1的不同接线方式(高电平,低电平,不接线),开发板的下载情况分析如下图:(“x”代表不接线,“√”代表能成功下载)
  • 2、BOOT决定的模式

  • 前言

    STM32F103C8T6最小系统板如何下载程序。
    以及下载程序时,boot0和boot1的影响。


    一、思维导图

    二、注意事项

    1.针对BOOT0和BOOT1的不同接线方式(高电平,低电平,不接线),开发板的下载情况分析如下图:(“x”代表不接线,“√”代表能成功下载)

    总结:

    1、从图片中可以看出,程序是一定能下载成功的,但是不一定能运行成功,并且,ST-Link下载模式下,但凡BOOT0=1,都不能执行代码。为什么?因为J-Link将代码下载到Flash中,而决定启动模式的BOOT0和BOOT1配置为了启动方式不是从FLash开始的,读不到代码
    2、在串口下载模式下(注意不使用DTR和RTS电路下载),程序同样被写入Flash;
    3、无论是用哪一种方式下载程序,程序存储的位置都在Flash,然而BOOT0和BOOT1决定了程序从何处开始处理(PC指针的初始值被配置成什么);所以如果程序下载好了之后,需要将BOOT0和BOOT1的接线方式配置成使程序从Flash处开始启动即可,例如:BOOT0 = 0,BOOT1=1即可;

    2、BOOT决定的模式

    1、主闪存存储器
    是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序

    2、系统存储器
    从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

    Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
    Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
    Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动。

    3、内置SRAM
    内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32:BOOT0与BOOT1的对比

    发表评论