1.堆和栈大小
定义大小在startup_stm32f2xx.s
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
;
;
;
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
2.堆和栈位置
通过MAP文件可知
HEAP 0x200106f8 Section 512 startup_stm32f2xx.o(HEAP)
STACK 0x200108f8 Section 1024 startup_stm32f2xx.o(STACK)
__heap_base 0x200106f8 Data 0 startup_stm32f2xx.o(HEAP)
__heap_limit 0x200108f8 Data 0 startup_stm32f2xx.o(HEAP)
__initial_sp 0x20010cf8 Data 0 startup_stm32f2xx.o(STACK)
显然 Cortex-m3资料可知:__initial_sp是堆栈指针,它就是FLASH的0x8000000地址前面4个字节(它根据堆栈大小,由编译器自动生成)
显然堆和栈是相邻的。
3.堆和栈空间分配
栈:向低地址扩展
堆:向高地址扩展
显然如果依次定义变量
先定义的栈变量的内存地址比后定义的栈变量的内存地址要大
先定义的堆变量的内存地址比后定义的堆变量的内存地址要小
4.堆和栈变量
栈:临时变量,退出该作用域就会自动释放
堆:malloc变量,通过free函数释放
另外:堆栈溢出,编译不会提示,需要注
上一篇:STM32堆和栈(Heap & Stack)的资料理解
下一篇:STM32堆和栈(Heap & Stack)及SRAM存储使用
推荐阅读最新更新时间:2024-11-17 11:44
设计资源 培训 开发板 精华推荐
- LT1120CS8 电池后备稳压器的典型应用电路
- 1:1复刻梁山派智能小车
- EVAL-ADE7978EBZ,评估 ADE7933 隔离式计量芯片组的评估板
- 可装语音助手的ESP32开发板
- LTC1560-1,直流准确 500kHz/1Mhz 椭圆滤波器
- NCP170AMX120GEVB:超低 IQ 150mA CMOS LDO 稳压器评估板
- 使用 ROHM Semiconductor 的 BD49K59G-TL 的参考设计
- LTC1664IN 微功率四路 10 位 DAC 的典型应用
- LT3091MPT7 12V 至 ±3.3V 低噪声电源的典型应用
- EVAL-AD7143-1EBZ,评估板允许用户评估用于电容式触摸传感器的 AD7143-1 可编程控制器的特性
- 有奖活动“庖丁”解智能睡眠监测仪,一波“水军”来围观
- 证明自己,VICOR技术问题测试问卷,等您来挑战!好礼等您拿!
- 直播已结束【解锁 TI Sitara AM2x MCU 在电机驱动中的新可能】
- 报名、参会赢京东卡:意法半导体 NFC 研讨会2024-北京站
- 【贝能好礼相送】我们拼啦 寻觅Infineon 调光恒流LED驱动器 ICL5102写真
- 希望一月 爱上EEWORLD——论坛推广月(恩智浦全程赞助)
- 艾睿电子直播:聚焦“TI FPD-Link III 汽车芯片组” ,汽车视频传输理想解决方案
- TE有奖活动|当代物联网智能天线设计趋势
- 【看电源研讨会 抽好礼】避免常见的AC-DC设计缺陷