STM32微控制器有三种常见的启动(Boot)模式,这些模式决定了系统启动时如何加载和执行代码。以下是这三种模式的简要介绍:
1. Boot from Flash (默认模式) 描述:这是STM32的默认启动模式。在此模式下,STM32会从内部Flash存储器(通常是程序存储区域)加载程序代码并执行。
特点: 从主Flash(例如:STM32的内置闪存)加载应用程序。
适用于正常应用开发,在开发过程中,通常会将代码烧写到Flash中。
一般在系统启动时,STM32会执行主程序中的初始化代码,并开始执行应用程序。
启动流程:系统上电或复位时,MCU默认启动并从Flash中加载执行代码。
2. Boot from System Memory (Bootloader模式)描述:在这个模式下,STM32会从系统内存加载并执行代码。系统内存通常指的是STM32芯片内的Bootloader(引导程序),这是一个预先存在的固件,用于实现代码的加载和更新。
特点: 该模式通常用于固件的更新或调试。STM32的Bootloader可以通过串口(USART)、USB、CAN等接口接收固件更新并写入Flash中。
通过Bootloader,可以通过外部设备(如PC)向芯片中烧写新的固件。
该模式在应用启动时,如果用户未指定其他启动方式,STM32会执行Bootloader,并且通常会检查是否有新的固件需要烧录。
启动流程:当系统检测到引导程序有效时,它会进入引导模式,接收新的程序并将其写入到Flash中。
3. Boot from Embedded SRAM (SRAM启动模式)描述:在此模式下,STM32将从内部SRAM(静态随机存取存储器)中加载代码并执行。通常,这种模式用于调试或启动小型程序。
特点: 适用于快速调试或运行仅存储在SRAM中的程序代码。
启动速度较快,因为不需要访问Flash,只需从SRAM读取代码。
常用于开发过程中,直接从外部设备(如JTAG或SWD接口)代码到SRAM并运行,便于调试。
启动流程:在复位后,STM32会检查是否有代码需要从SRAM执行。如果系统配置为从SRAM启动,它将直接执行存储在SRAM中的程序。
选择启动模式 STM32的启动模式通常是通过复位引脚的电平或特定的引脚(如BOOT0、BOOT1)设置的。通过配置这些引脚的状态,用户可以选择从Flash、System Memory或SRAM中启动程序。
BOOT0引脚:通过控制BOOT0引脚的状态,可以选择从哪一位置启动代码。
BOOT0 = 0:从Flash启动。
BOOT0 = 1:从System Memory启动(即Bootloader模式)。