STM32的堆栈大小在官方文件已经定义好了,分别是:
Heap_Size EQU 0x00000200
一共512字节
Stack_Size EQU 0x00000400
一共1K字节
/*********************************************************************************************/
但是STM32在keil环境下每次编译后的堆栈起始地址并不是固定的(就算事先已经定义好了堆栈的大小),因为栈的起始地址是由用户程序中事先定义好的变量数目决定的(实测是如此)。但欣慰的是,一旦这次编译之后,堆栈的首地址就不会再发生改变了,换言之,就是在烧完程序之后,堆栈的地址就永远不变了。
/*********************************************************************************************/
要关心STM32的堆栈关系,首先无法避免的就是下面这两幅图片了:
图一:MDK环境下,STM32 Bulid Output窗口部分截图
图二:MDK环境下,STM32的.map文件中关于堆栈地址的说明(绿色高亮部位)
/*********************************************************************************************/
STM32的内部sram的首地址为0x20000000,图二中的__initial_sp既为栈的高地址(也就是栈的首地址)(STM32的堆栈地址在MDK下的配置默认是连
stm32堆栈整理
最新推荐文章于 2025-07-03 15:01:38 发布