一、存储结构
STM32F1有四种存储单元,依次是SRAM、Flash、FSMC和AHB到APB桥(挂载各种外设)。
二、存储组织
程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。
可访问的存储器空间被分成8个主要块,每个块为512MB。其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间。
其详细存储分配如下,
以上存储器映射的对应地址,用户不可更改。用户的外设、扩展Flash和扩展RAM只能挂在外部设备区和外部RAM区。
1.片内Flash
虽然存储器逻辑地址分配时,Code区地址是从0x0000 0000到0x1FFF FFFF,但实际片上Flash的起始地址是0x0800 0000。这是因为ARM给出的Cortex-M3内核标准中,上电后CPU必须从0地址开始执行,ST在设计STM32时,为实现不同的启动模式设计了一个启动映射的过程,即系统上电后会根据BOOT0和BOOT1的引脚电平将启动位置地址(主闪存存储器启动:0x0800 0000;系统存储器启动:0x1FFF F000;内置SRAM启动:0x2000 0000)映射到0地址,所以Code区的0x0000 0000到0x07FF FFFF地址,不与任何物理存储器相关联,只是用作启动映射空间。
STM32的Flash包括:Flash主存储区(Main memory)、系统存储器(System memory),以及操作&