STM32F103学习 - 存储器映射


前言

虽然应对一些开发需求较简单项目时可能用不到存储器相关的知识,但掌握存储器仍然是学习STM32的基础,尤其是项目碰到Flash空间不够需要做代码优化、或者需要对Flash进行读写操作的时候。


一、什么是存储器映射?

存储器指可以存储数据的设备,本身没有地址信息,对存储器(Flash、SRAM、外设寄存器等)分配地址的过程称为存储器映射

二、STM32的寻址范围?

想要解答这个问题,我们需要清楚以下两点

1、32位的单片机可以有32根地址线

每根地址线有两种状态:导通或不导通。因此,STM32的寻址能力为2^32 = 4GByte
STM32的最大寻址范围为0x0000 0000~0xFFFF FFFF

2、单片机内存地址访问的存储单元是按字节编址的(而不是bit)

简而言之,每个地址占用一个字节
Flash空间
从上图可知,页0的地址范围为0x0800 0000 ~ 0x0800 03FF,大小为0x400,转换为十进制为1024。由于一个地址占用一个字节,因此一页的存储空间为1KByte,因此上图所示flash大小为32KByte

三、存储器地址

STM32F1将4GB(2^32)的存储器空间分成8个块,每个块为512MB
Memory mapping
其中最重要的是存放Flash内容(代码存放在Flash中)的block 0,分配给SRAM的block 1,以及存放片上外设寄存器的block 2,至于其他block用于系统保留或扩展接口。
其中block 0和block 1为实际存储介质​​(Flash/SRAM),需要标注物理容量,而其他block 是​​地址映射的逻辑框架​​,用于整合外设控制、扩展接口和系统功能。
各个块的功能和作用可以参考下面这篇文章:

stm32单片机基础知识总结(四)——存储器映射

四、思考

1、为什么STM32有4GB的寻址范围,但STM32F103系列的SRAM仅20KB,Flash最大才128KB?

答:STM32的寻址能力上限为4GB,但并不意味着必须搭配4GB的实际物理存储器使用,由上面的存储器地址图可知,很大一部分区域被保留(Reserved)了,无实际存储单元。基于实际应用场景和成本等因素考虑,并不需要使用。
当然,预留地址允许ST未来推出更大容量芯片(如将Flash从128KB升级到2MB)或新增外设,而无需改动架构。

2、物理存储和逻辑映射有何区别?

答:物理存储是真实的存储介质​​,如Flash、SRAM,而逻辑映射是​​地址空间的虚拟划分​​,并非实际存储介质。
物理存储与逻辑映射的区别


总结

STM32存储器映射是​​连接硬件与软件的桥梁​​,通过逻辑地址统一管理物理资源,使开发者能高效、安全地控制芯片功能。理解其分区逻辑(如block划分)和寄存器映射机制,是深入STM32开发的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值