STM32的Flash和SRAM

本文详细介绍了存储器的基本概念,包括易失性和非易失性存储器的区别,重点讲解了RAM(SRAM、DRAM)和ROM(EEPROM、FLASH)的特点及应用。特别是对于STM32系列微控制器的FLASH和SRAM进行了深入解析,阐述了它们在程序运行中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、存储器

存储器分为易失性和非易失性。

  • 易失性:掉电数据会丢失,通常指RAM;

RAM分为SRAM、DRAM

  • SRAM:静态RAM,只要上电数据就不会丢失;
  • DRAM:动态RAM,需要每隔一段时间刷新数据,否则数据会丢失;
  • 非易失性:掉电数据仍然可以保存,通常指ROM;
  1. 最初的ROM只读或可写一次然后只读;
  2. 后来,发展出电可擦除即EEPROM,从此“ROM只读存储器”只是名义上的只读,实际就是可读可写。EEPROM可对指定字节进入擦除写入。
  3. 再后来,FLASH闪存出现了,以块为单位擦除,使得存储的数据密度更高,成本更低;

        FLASH分为Nor FLASH和Nand FLASH:Nor FLASH可以以字节为单位读取,Nand FLASH是以块为单位读取数据;

2、STM32的存储器

2.1、FLASH

2.1.1、STM32的FLASH类型——Nor FLASH

FLASH分为Nor FLASH和Nand FLASH,Nor Flash的数据线和地址线是分开的,Nand FLASH的数据线和地址线是共用的。

这就导致了Nand FLASH存放代码的话,CPU指令译码后无法直接执行,所以STM32的FLASH指的是Nor FLASH;如果要用Nand FLASH存放代码的话,还要有一块Nor FLASH或RAM,用于加载程序执行;

2.1.2、FLASH的结构——STM32F4中文参考手册

2.2、SRAM

3、代码和数据存放的区域

  • CODE:指程序中代码即函数体的大小,含未使用的函数;
  • RO_DATA:Read Only只读,const常量和字符串常量;
  • RW_DATA:Read Write,已初始化的、可读可写的全局变量和静态变量;
  • ZI_DATA:未初始化的可读可写全局/静态变量【=0也被认为是未初始化】,堆、栈;

存放在Flash中:BIN文件 = CODE+RO_DATA+RW_DATA 

存放在SRAM中:所有的变量 = RW_DATA+ZI_DATA

注意,RW_DATA出现了两次,在程序未执行的时候是在Flash中的,程序执行的时候会加载到SRAM当中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值