STM32的BOOT0和BOOT1的作用都是什么?

STM32一共有三种启动模式,在ST官网上下载的RM0008中,可找到启动相关的配置说明:

BOOT1 BOOT0 启动模式 说明
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1 1 内置SRAM 内置SRAM被选为启动区域

以上三种存储介质:
A 主闪存存储器:芯片内置的Flash
B 系统存储器 :厂家出厂时在芯片内部一块特定的区域预留了一段Bootloader,慢但用于救机
C 内置SRAM:芯片内置的RAM区,就是内存,掉电就丢失

对以上ABC三种方式作详细解释如下:

A 正常模式

  • 启动条件BOOT0=0BOOT1=任意值
  • 功能
    • 芯片从用户Flash启动,执行用户编写的程序。
    • 下载方式:通过调试接口(如SWD、JTAG)直接烧录Flash。
      • 常用工具:ST-Link、J-Link、DAP-Link等。
      • 无需修改启动模式,只要调试接口未被用户程序禁用。
  • 特点
    • 高速、稳定,适合日常开发和量产。
    • Flash可擦写约10万次,足够大多数应用需求。

B 救机模式/ISP(系统存储器启动模式)

  • 启动条件BOOT0=1BOOT1=0
  • 功能
    • 芯片从系统存储器(System Memory)启动,执行出厂预置的BootLoader程序。
    • 该BootLoader支持通过串口(如USART) 进行程序下载(即ISP),常用于以下场景:
      • 用户Flash中的程序损坏,无法正常运行。
      • 未使用调试器(如ST-Link),仅需通过串口更新程序。
  • 特点
    • 速度较慢(受限于串口速率),通常用于紧急修复或简单烧录。
    • 无需额外工具,仅需串口和上位机软件(如STM32CubeProgrammer)。

C SRAM启动模式

  • 启动条件BOOT0=1BOOT1=1
  • 功能
    • 芯片从内部SRAM启动,程序在RAM中运行。
    • 下载方式:通过调试接口(SWD/JTAG)将代码临时加载到SRAM。
  • 特点
    • 掉电后程序丢失,适用于快速调试或测试代码片段。
    • 无需擦写Flash,节省寿命。
    • 该方式用的较少,其SRAM一般限制在数十KB,不易调试大型程序

以上,由于SRAM启动模式使用频次低,因此常将BOOT1接地或者当做普通引脚使用,而BOOT0则引出按键。

posted @ 2025-04-19 22:50  TATAzml  阅读(2066)  评论(0)    收藏  举报