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=0
,BOOT1=任意值
。 - 功能:
- 芯片从用户Flash启动,执行用户编写的程序。
- 下载方式:通过调试接口(如SWD、JTAG)直接烧录Flash。
- 常用工具:ST-Link、J-Link、DAP-Link等。
- 无需修改启动模式,只要调试接口未被用户程序禁用。
- 特点:
- 高速、稳定,适合日常开发和量产。
- Flash可擦写约10万次,足够大多数应用需求。
B 救机模式/ISP(系统存储器启动模式)
- 启动条件:
BOOT0=1
,BOOT1=0
。 - 功能:
- 芯片从系统存储器(System Memory)启动,执行出厂预置的BootLoader程序。
- 该BootLoader支持通过串口(如USART) 进行程序下载(即ISP),常用于以下场景:
- 用户Flash中的程序损坏,无法正常运行。
- 未使用调试器(如ST-Link),仅需通过串口更新程序。
- 特点:
- 速度较慢(受限于串口速率),通常用于紧急修复或简单烧录。
- 无需额外工具,仅需串口和上位机软件(如STM32CubeProgrammer)。
C SRAM启动模式
- 启动条件:
BOOT0=1
,BOOT1=1
。 - 功能:
- 芯片从内部SRAM启动,程序在RAM中运行。
- 下载方式:通过调试接口(SWD/JTAG)将代码临时加载到SRAM。
- 特点:
- 掉电后程序丢失,适用于快速调试或测试代码片段。
- 无需擦写Flash,节省寿命。
- 该方式用的较少,其SRAM一般限制在数十KB,不易调试大型程序
以上,由于SRAM启动模式使用频次低,因此常将BOOT1接地或者当做普通引脚使用,而BOOT0则引出按键。