21天学通Linux嵌入式开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.2 STM32的启动配置

在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启动,这种模式可以用于调试。