這段時間使用STM32F103C8T6芯片作項目,要使用芯片中的Flash存儲用戶信息,其Flash有128K Bytes(其中64KB仍是未檢測,可是可用的),很大一部分用於存儲程序代碼以及相關的變量等,剩下的能夠做爲斷電保存數據的存儲,要知道什麼位置可用,須要知道代碼的所佔用的空間大小。blog
燒寫到單片機所佔用的空間,能夠看編譯結果的中的Program Size項獲取,以前對Keil編輯後的Program Size比較困惑,它們表明了些什麼,這回有了瞭解。內存
圖1 存儲模式示意it
- Code
代碼佔用空間,佔用Flash空間;編譯
- RO-data (Read Only)
只讀常量,如const類型的常量,也佔用Flash空間;class
- RW-data (Read Write)
可讀寫數據,通常是全局變量,先要保存在Flash中,初始化後,再由Flash拷貝到RAM,佔用Flash空間和RAM空間;變量
- ZI-data
棧空間(Stack)及堆空間(Heap)所需的空間,申請的內存空間用於局部變量進行堆棧處理,只佔RAM空間。程序
舉例:im
Program Size: Code=22640 RO-data=2856 RW-data=1280 ZI-data=3464 (單位:字節)數據
Flash size:Code + RO-data + RW-data=22640+2856+1280=26776字節;項目
RAM size:RW-data + ZI-data=1280+3464=4744字節;
知道了這些後,就能夠合理安排Flash的空間了。