1. 程式人生 > >2018.12.10 STM32關於儲存定義的變數的位置研究

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中