打印
[应用相关]

STM32存储器映像

[复制链接]
512|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2025-4-10 13:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 存储器介绍
本文介绍STM32各存储器以及其所占地址区域,以及看懂RAM和ROM的区别;



由上一篇文章DMA直接存储器(DMA直接存储器-CSDN博客)的内容可知,DMA的作用是在存储器之间进行数据转运的,那我们就应该了解下STM32中都有哪些存储器,这些存储器又都是被安排在哪些地址上。

计算机组成的5大部分:运算器、控制器、存储器、输入设备和输出设备,其中运算器和控制器,一般会合在一起叫CPU,所以计算机的核心部件就是CPU和存储器,存储器有两个重要知识点,一个是存储器内容,一个是存储器地址。

由表可知存储器被分为两大类:

        ROM(Read Only Memory)只读存储器。ROM是一种非易失性,掉电不丢失的存储器。ROM又分为三块;(1)程序存储器FLASH主闪存,是我们下载程序的位置,运行程序一般是从主闪存里开始运行的。(2)系统存储器和选项字节位于ROM地址的末尾,实际上他们的存储介质也是Flash,系统存储器主要用来存储BootLoader,BootLoader程序是芯片出厂自动写入的,一般不允许我们修改。(3)选项字节用来存储一些独立于程序代码的配置参数,主要存的是FLASH的读保护和写保护,还有看门狗等配置。

        RAM(Random Access Memory)随机存储器。RAM是易失性,掉电丢失的存储器。(1)运行内存SRAM,存储运行过程中的临时变量例如:定义变量,数组,结构体,类比于电脑的话就是内存条。(2)外设寄存器,存储各个外设的配置参数,也就是我们初始化各个外设,最终所读写的东西。外设寄存器的存储介质也是SRAM,只是我们习惯将运行内存叫SRAM,外设寄存器叫寄存器。寄存器是特殊的存储器,寄存器背后会连接许多跟根导线,用来控制外设电路的状态,CPU通过控制寄存器进行读写,进而控制外设硬件电路。(3)内核外设寄存器,就是内核的外设NVIC,SysTick,因为内核外设和其他外设不是一个厂家设计的,所以地址也被分开。

了解完存储器再来看这个系统结构就会清晰许多,左上角是系统内核,右边的一大部分可以将其看成存储器,所以总共就是CPU和存储器两大部分



2 例子
程序1:



现象:第一行变量的值,第二行变量的地址



程序2:若将定义变量前加 const 关键字,变量aa就变为只读不可更改,此时aa就被存储在ROM只读存储器中Flash里。



现象:第二行地址更改位08开头。



由此可知const关键字的使用场景是用于定义一批大量且不可更改的数据,从而节省SRAM空间,例如:oled字模显示的数组字库。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/xiaobugl/article/details/147006618

使用特权

评论回复
沙发
xiaoqizi| | 2025-5-9 19:42 | 只看该作者
STM32的存储器映像是指其4GB逻辑地址空间的分配规则

使用特权

评论回复
板凳
木木guainv| | 2025-5-9 21:26 | 只看该作者
STM32基于32位ARM Cortex-M内核,采用内存与IO统一编址,可访问4GB地址空间

使用特权

评论回复
地板
Jiangxiaopi| | 2025-5-9 23:03 | 只看该作者
实际硬件资源仅占用部分地址,其余为保留地址

使用特权

评论回复
5
荣陶陶| | 2025-5-10 08:32 | 只看该作者
根据BOOT引脚的配置,选择启动时映射到主闪存、系统存储器或内嵌SRAM

使用特权

评论回复
6
Zhiniaocun| | 2025-5-10 10:19 | 只看该作者

主闪存分为多个扇区(如小容量产品每扇区1KB,大容量产品每扇区2KB),擦除需按扇区或全片擦除,写入需先擦除


使用特权

评论回复
7
Zuocidian| | 2025-5-10 12:21 | 只看该作者
系统存储器存储ISP启动代码(如ST提供的Bootloader),用于通过串口更新Flash

使用特权

评论回复
8
Puchou| | 2025-5-10 14:15 | 只看该作者
位带区将外设寄存器和SRAM的每一位映射到别名地址区,实现按位操作

使用特权

评论回复
9
Xiashiqi| | 2025-5-10 16:03 | 只看该作者
复位后,CPU从[size=0.875]0x00000000读取栈顶地址,从[size=0.875]0x00000004开始执行代码

使用特权

评论回复
10
小海师| | 2025-5-10 17:41 | 只看该作者
外设寄存器与内存统一寻址,简化访问

使用特权

评论回复
11
Haizangwang| | 2025-5-10 19:34 | 只看该作者
支持从Flash、系统存储器或SRAM启动,适应不同应用场景

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2245

主题

16655

帖子

18

粉丝