这种方法也可以解决芯片烧录的时候没有加入debug模式,导致的无法二次烧录。本质原理还是通过bootload来覆盖之前写的程序,来恢复。
切换 BOOT0 和 BOOT1 引脚的电平可以让 STM32 进入 系统存储器启动模式,运行内置的 Bootloader 程序。Bootloader 支持通过串口(USART)烧录用户程序到 Flash,从而实现程序的更新。这是 STM32 的一种常用烧录方式,特别适用于没有专用调试工具(如 ST-Link)的场景。Bootloader 是 ST 官方预先烧录在 STM32 系统存储器中的一段程序。当 BOOT0 = 1 且 BOOT1 = 0 时,STM32 会进入 系统存储器启动模式。在这种模式下,STM32 会运行预装在系统存储器中的 Bootloader 程序。
系统存储器启动模式(System Memory Boot Mode),即 Bootloader 模式。在这种模式下,STM32 会运行预装在系统存储器中的 Bootloader 程序,从而支持通过串口(USART)烧录程序。
-
USART(串口)
-
USB(仅限支持 USB 的型号)
-
CAN(仅限支持 CAN 的型号)
BOOT1 | BOOT0 | 启动模式 | 描述 |
---|---|---|---|
0 | 0 | 主闪存存储器启动模式 | 从 Flash 启动,运行用户程序(默认模式)。 |
0 | 1 | 系统存储器启动模式 | 从系统存储器启动,运行内置 Bootloader,支持串口烧录程序。 |
1 | 0 | 嵌入式 SRAM 启动模式 | 从 SRAM 启动,通常用于调试。 |
1 | 1 | 保留 | 通常不使用。 |
-
BOOT0 和 BOOT1 引脚的电平需要在复位时生效(通过复位按钮或重新上电)。
-
硬件连接:
-
将 USB 转 TTL 模块的 TX 连接到 STM32 的 RX(PA10)。
-
将 USB 转 TTL 模块的 RX 连接到 STM32 的 TX(PA9)。
-
共地连接(GND)。
-
-
进入 Bootloader 模式:
-
将 BOOT0 引脚接高电平(3.3V)。
-
将 BOOT1 引脚接低电平(GND)。
-
按下复位按钮(或重新上电)。
-
-
Bootloader 运行:
-
STM32 运行 Bootloader 程序,初始化 USART 接口。
-
Bootloader 等待接收烧录指令。
-
-
烧录程序:
-
使用烧录工具(如 STM32 Flash Loader Demonstrator)通过 USART 发送烧录指令和数据。
-
Bootloader 将接收到的数据写入 Flash。
-
-
退出 Bootloader 模式:
-
烧录完成后,将 BOOT0 引脚接低电平(GND)。
-
按下复位按钮(或重新上电)。
-
STM32 从 Flash 启动,运行用户程序。
-