STM32堆栈区(二)
STM32的分区
STM32的分区从0x2000 0000(0x2000 0000是SRAM的起始地址,由此可知,堆栈等都是在RAM中的)开始。静态区,堆,栈。所有的全局变量,包括静态变量之类的,全部存储在静态存储区。 紧跟静态存储区之后的,是堆区(如没用到malloc,则没有该区),之后是栈区,栈在程序中存储局部变量。
先看启动文件startup_stm32f10x_md.s的定义:
;
Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size
EQU 0x00000400
AREA
STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size
EQU 0x00000200
AREA
HEAP, NOINIT, READWRITE, ALIGN=3
本文详细介绍了STM32的堆栈管理,包括堆栈区的大小设定、栈顶指针MSP的初始位置、栈与全局变量的内存分配以及堆的向上生长方向。还讨论了大端和小端模式在STM32中的应用。强调了栈区管理的重要性,避免函数局部变量过多导致栈溢出。
订阅专栏 解锁全文
1310

被折叠的 条评论
为什么被折叠?



