STM32記憶體使用及分配

2021-08-14 04:09:45 字數 769 閱讀 9007

stack size,一般小工程0x400足夠,我們綜合實驗才設定0x1000就夠用,所以預設無需設定太大。stack_size的值根據你程式中區域性變數最大尺寸計算,

heap size,如果沒有用到標準庫的malloc,就是廢物,純屬浪費記憶體,所以直接設定為0即可。heap_size的值如果程式中沒有用到動態記憶體malloc就預設不用管。

在keil中編譯工程成功後,在下面的bulid ouput視窗中會輸出下面這樣一段資訊:

program size: code=6320 ro-data=4864 rw-data=44 zi-data=1636

code :是程式中**所佔位元組大小

ro-data :程式中所定義的指令和常量大小 (個人理解 :read only)

rw-data :程式中已初始化的變數大小 (個人理解」:read/write)

zi-data :程式中未初始化的變數大小 (個人理解 :zero initialize)

簡單的說就是在燒寫的時候是flash中的被占用的空間為:code+ro data+rw data

程式執行的時候,晶元內部ram使用的空間為: rw data + zi data

可以通過.map檢視占用的flash和ram大小

stm32記憶體分配

原文 1 棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等,其操作方式類似 於資料結構中的棧。2 堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由作業系統 分配 方式類似於資料結構中的鍊錶。3 全域性區 靜態區 static 全域性變數和靜...

STM32的記憶體分配

使用keil編寫 區域性變數和全域性變數分別存放在什麼地方?在乙個函式內部定義的變數是內部變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的,這稱為區域性變數。使用區域性變數注意以下問題 不同函式中可以使用相同名字的變數,它們代表不同的物件,互不干擾。...

STM32堆區分配記憶體 malloc的使用

測試環境 stm32 iar6.4 堆區大小設定為0x1000 預設值 變數定義 char p null char p2 null 1.申請記憶體大小超過設定值 p char malloc sizeof char 5090 malloc返回null,使用這段記憶體是會出錯 硬體錯誤 2.申請兩段記憶...