实用指南:STM32存储结构

我们在使用Keil编译程序成功后会,有一行各部分占用内存的提示信息,如下

Program Size:Code=7492 RO-data=556 Rw-data=72 ZI-data=11688,这是stm32代码编译后的提示

我们分析一下这个编译输出:

- Code: 7492字节 -> 代码部分(存放在Flash)

- RO-data: 556字节 -> 只读材料(存放在Flash)

- RW-data: 72字节 -> 已初始化的读写内容(在Flash中存储初始值,运行时拷贝到RAM)

- ZI-data: 11688字节 -> 未初始化的数据(运行时在RAM中初始化为零)

所以,占用Flash的空间为:Code + RO-data + RW-data(缘于RW-data的初始值需要存储在Flash中) 即:7492 + 556 + 72 = 8120字节 ,只是注意,ZI-data不占用Flash空间,基于它只需要在程序运行时在RAM中分配并初始化为零。

因此,这个程序占用的Flash空间为8120字节。 另外,程序运行时占用的RAM空间为:RW-data + ZI-data = 72 + 11688 = 11760字节。

总结:

Flash占用:8120字节 约7.93KB

RAM占用:11760字节 约11.48kB

并且我们在购买单片机的时候会经常看到一下字样,Flash ,RAM等今天我们将解密他们究竟是什么

简单来说:

  • Flash大小:决定了你的程序代码能写多大,以及能存储多少常量数据(如图片、字体等)。如果你的软件很大,就要选Flash大的型号。

  • RAM大小:决定了你的程序运行时能同时使用多少变量和数据。如果你的软件需要处理大量数据、有很多全局变量、或者应用了困难的算法和递归,就需要更大的RAM。RAM不足是导致程序莫名崩溃的常见原因。

要想深入了解这些东西 必须我们对STM32存储器划分结构有一定了解

STM32的存储器结构采用了哈佛架构(Harvard Architecture),这意味着程序存储器(Flash)和数据存储器(RAM)

posted @ 2025-08-24 21:52  yfceshi  阅读(18)  评论(0)    收藏  举报