在STM32中提供了三种不同的启动模式,一般由BOOT[1:0]引脚电平来选择。
● BOOT1=x,BOOT0=0:用户闪存被选为启动区,x表示任意电平。
● BOOT1=0,BOOT0=1:系统内存被选为启动区。
● BOOT1=1,BOOT0=1:嵌入式SRAM被选为启动区。
这里需要简单介绍一下STM32的三种启动模式对应的存储介质。这三种存储介质都是芯片内置的,分别如下:
● 用户闪存,也就是芯片内置的Flash。
● SRAM,芯片内置的RAM区,也就是内存。
● 系统存储器,STM32 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段BootLoader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。
在系统上电的时候,CPU首先根据这两个脚来确定是哪种模式的启动,然后把相应模式的起始地址映射到0地址处,并从0地址处开始执行。
BOOT[1:0]引脚电平的值是在复位后SYSCLK的第4个上升沿时被锁定的。当退出standby模式时,BOOT[1:0]引脚被重新采样。因此,BOOT[1:0]引脚必须在standby模式下也保持需要的启动模式配置。
典型的STM32的启动模式选择电路,如图6-1所示。
图6-1 STM32的启动模式选择电路
在这三种启动模式中,从用户闪存启动是正常的工作模式;从系统存储器启动模式启动的程序功能由厂家设置;从内置SRAM启动模式可以用于调试。