stm32 堆栈存放分析

一、理论数据存放

数据在SRAM中的存放情况,最下层为静态数据区,再上层是堆区,最上层是栈区,

stm32 堆栈存放分析_第1张图片

二、栈存放:

(1)栈底地址:

在map文件中搜索STACK,可以看到该工程的栈底地址为0x200002a0

stm32 堆栈存放分析_第2张图片

(2)栈顶地址:

在map文件中搜索__initial_sp,可以看到该工程的栈顶地址为0x200003a0

stm32 堆栈存放分析_第3张图片

(3)栈占用大小:

根据上面的地址信息,则可以推算该工程的栈大小为 0x200003a0 - 0x200002a0 = 0x0100

在启动文件中查到栈分配大小为0x100,和计算结果一致

stm32 堆栈存放分析_第4张图片

在map文件最后,看到ram占用为928字节 = 0x3a0,和栈顶指针相同。

stm32 堆栈存放分析_第5张图片

三、实际数据存放

所以该工程的实际堆栈占用为

stm32 堆栈存放分析_第6张图片

你可能感兴趣的:(stm32)