2018.12.10 STM32关于存储定义的变量的位置研究

一、写此文的目的是之前我对存储位置做了一个完成的实验,而且有了完整的一套结果,但是现在想找那个结果的时候发现工程已经不见了,根据我当时的结论,以免后面忘记,先记录一个思想和结论在此。如需验证,后面在附上实验结果。

1.首先搞清楚,STM32 RAM 不仅仅划分为堆栈两个空间,剩下的空间你想存啥应该都是可以的,最常用的一种用法便是存储数据。

2.在定义变量时,我通常会有疑问,我写的变量到底是存在FLASH,还是RAM的堆栈,还是RAM中。

3.由我做出来的实验我总结出来,想要知道变量变量在什么位置,可以从两个思路入手,我暂时定义为此理论为变不变,回不回收原则。第一就是这个变量的值变不变,除了const修饰的变量,其他的变量值都是可变的,第二就是这个变量会不会自动回收。

4.举例:

在main外部定义 

int x1;//由变不变,回不回收理论可知,x1可变,不回收,所以x1定义在RAM中

static int  x2 = 0;//由变不变,回不回收理论可知,x2可变,不回收,所以x2定义在RAM中

const int x3 = 3;//由变不变,回不回收理论可知,x3不变,不回收,所以x3定义在Flash中

在main内部定义

int x4;//由变不变,回不回收理论可知,x4可变,回收,所以x4定义在RAM的栈中

static int  x5 = 0;//由变不变,回不回收理论可知,x5可变,不回收,所以x5定义在RAM中

const int x6 = 3;//由变不变,回不回收理论可知,x6不变,不回收,所以x6定义在Flash中

猜你喜欢

转载自blog.csdn.net/qq_39257301/article/details/84938320