stm32中的堆栈设置
keil编译完成时存储情况
当编译成功时,会出现:
BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632
- Code:程序代码部分
- RO-data: 程序定义的常量const temp
- RW-data:已初始化的全局变量
- ZI-data:未初始化的全局变量
片中的:
- flash=Code+RO-data+RW-data
- RAM=RW-data+ZI-data
通过上面的BUILD可以看出,这个程序已经用了1600多的RAM,为什么会出用到这么多的RAM呢?
在startup_stm32f10x_md.s文件中存在:
Stack_Size EQU 0x00000400
Heap_Size EQU 0x00000200
这样就明白了吧。
堆和栈的区别,举例
- 栈区(stack):由编译器自动分配和释放,存放函数的参数