日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32程序占用的内存容量计算

發(fā)布時(shí)間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32程序占用的内存容量计算 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

STM32中程序占用內(nèi)存容量

Keil MDK下Code, RO-data,RW-data,ZI-data這幾個(gè)段:

  • Code存儲(chǔ)程序代碼。
  • RO-data存儲(chǔ)const常量和指令。
  • RW-data存儲(chǔ)初始化值不為0的全局變量。
  • ZI-data存儲(chǔ)未初始化的全局變量或初始化值為0的全局變量。

占用的Flash=Code + RO Data + RW Data;

運(yùn)行消耗的最大RAM= RW-data+ZI-data;

這個(gè)是MDK編譯之后能夠得到的每個(gè)段的大小,例如下圖Program Size 中的Code R0?RW ZI

可以計(jì)算出占用的FLASH = 34456+456+172=34.26kB,占用的RAM=172+18908=18.63kB

STM32F103芯片的內(nèi)存資源如下:

那么堆棧是如何分配的呢,堆棧的內(nèi)存占用就是在上面RAM分配給RW-data+ZI-data之后的地址開始分配。

堆:編譯器調(diào)用動(dòng)態(tài)內(nèi)存分配的內(nèi)存區(qū)域。

棧:程序運(yùn)行的時(shí)候局部變量的地方,先進(jìn)后出,這種結(jié)構(gòu)適合程序調(diào)用,所以局部變量用數(shù)組太大了都有可能造成棧溢出

堆棧溢出容易導(dǎo)致HaltFault。

堆棧大小的設(shè)置在啟動(dòng)文件start_stmf103xb.s中(以STM32F103為例):

總結(jié)

以上是生活随笔為你收集整理的STM32程序占用的内存容量计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。