静态随机存取存储器(SRAM)是一种不需要周期性刷新电路就能保持存储数据的半导体存储器,“静态”“随机存取” 是其核心特性,以下从名称拆解、核心原理、关键特点三方面详细解释:
一、名称核心含义拆解
-
“静态”(Static):无需刷新,数据稳定留存
“静态” 是相对 “动态随机存取存储器(DRAM)” 而言 ——DRAM 需要每隔几毫秒给存储单元通电 “刷新” 一次,否则数据会因电容漏电丢失;而 SRAM 的存储单元由触发器(通常是 6 个 MOS 晶体管组成的双稳态电路) 构成,只要芯片始终通电,触发器的两种稳定状态(对应 “0” 和 “1”)就能一直保持,无需额外刷新操作,数据 “静态留存”。 -
“随机存取”(Random Access):直接定位,读写高效
“随机存取” 指可以跳过其他存储单元,直接对任意地址的存储单元进行读写操作,访问速度与存储单元的物理位置无关。比如在 STM32 单片机中,要读取 SRAM 中地址为0x20000000(STM32 SRAM 起始地址常见值)的数据,无需先读取0x20000000之前的单元,可通过地址总线直接定位该单元,这也是 “随机” 的核心体现。 -
“存储器”(Memory):核心功能是临时存储数据
SRAM 本质是 “临时数据存储器件”,在单片机系统中用于存放程序运行时的动态数据(如栈中的函数局部变量、堆中malloc申请的动态内存数据)—— 断电后数据会立即丢失,这一点与 “掉电不丢数据” 的 Flash(用于存程序代码)有本质区别。
二、在 STM32 单片机中的实际关联
STM32 的 SRAM 是芯片内部集成的硬件模块(物理上是一片 MOS 晶体管构成的电路),堆和栈则是软件层面对 SRAM 的 “分区使用”:
- 比如 STM32F103 系列某型号单片机,其 SRAM 总容量为 20KB,地址范围是
0x20000000 ~ 0x20004FFF; - 编译器会在启动文件(如
startup_stm32f10x_hd.s)中定义 “栈的大小”(如Stack_Size EQU 0x0400,即 1KB),栈从 SRAM 高地址(0x20004FFF)向低地址增长; - 堆则从 SRAM 低地址(栈的结束地址)向高地址增长,比如栈占 1KB,那么堆的起始地址就是
0x20000000 + 0x0400 = 0x20000400,堆的最大可用空间就是总 SRAM 容量减去栈的大小(20KB - 1KB = 19KB,实际会预留少量空间避免栈堆溢出)。
简单说:SRAM 是 “物理容器”,堆和栈是这个容器里划分出的 “两个小区域”,三者共同支撑单片机程序的动态数据存储。
1890

被折叠的 条评论
为什么被折叠?



