STM32F407ZGT6芯片启动模式介绍

存储器采用固定的存储器映射,代码区域起始地址为0x0000_0000(通过ICode/DCode总线访问),而数据区域起始地址为0x2000_0000(通过系统总线访问)。Cortex™-M4F CPU始终通过ICode总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供启动空间。STM32F4xx微控制器实施一种特殊机制,可以从其它存储器(如内部SRAM)进行启动。

在STM32F4xx中,可通过BOOT[1:0]引脚选择三种不同的启动模式,如下表1所示。

启动模式选择引脚 启动模式 启动空间
BOOT1 BOOT0
X 0 主Flash 选择主Flash作为启动空间
0 1 系统存储器 选择系统存储器作为启动空间
1 1 SRAM 选择SRAM作为启动空间

复位后,在SYSCLK的第四个上升沿锁存BOOT引脚的值。复位后,用户可以通过设置BOOT1和BOOT0引脚来选择需要的启动模式。

BOOT0为专用引脚,而BOOT1则与GPIO引脚共用。一旦完成对BOOT1的采样,相应GPIO引脚即进入空闲状态,可用于其它用途。

芯片退出待机模式时,还会对BOOT引脚重新采样。因此,当器件处于待机模式时,这些引脚必须保持所需的启动模式配置。这样的启动延迟结束后,CPU将从地址0x0000_0000获取栈顶值,然后从始于0x0000_0004的启动存储器开始执行代码。

如果芯片从SRAM启动,在应用程序初始化代码中,需要使用NVIC异常及中断向量表和偏移寄存器来重新分配SRAM中的向量表。

你可能感兴趣的:(STM32专题)