"); //-->
标题一、看STM32启动文件,例如startup_stm32f10x_cl.s
一般默认是Stack_Size EQU 0x00000400
表示工程中栈大小是1024字节,即局部变量不能大于1024字节。
如果函数中出现局部变量例如u8 temp[4000];
启动文件的栈应该修改为Stack_Size EQU 0x00001000 ,此时栈是4096字节。
备注:栈stack是一块程序运行时用来存储临时变量的内存RAM空间。栈一般静态分配,并且后进先出,栈的生命周期从程序的起始直到程序结束。一个函数返回,其用到的栈空间就被释放给后续函数使用。
————————————————
例如keil 5 编译后,如图:Program Size: Code=15280 RO-data=284 RW-data=980 ZI-data=15964
Code为程序代码部分
RO-data 表示 程序定义的常量const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量
Code, RO-data,RW-data …flash
RW-data, ZIdata…RAM
使用是CPU是STM32F103C8,FLASH有64kBytes,RAM有20kBytes
查看工程的map文件
Total RO Size (Code + RO Data) 15564 ( 15.20kB)
Total RW Size (RW Data + ZI Data) 16944 ( 16.55kB)
Total ROM Size (Code + RO Data + RW Data) 16384 ( 16.00kB)
123
工程代码使用的FLASH和ARM均小于CPU的额定大小,正常。
————————————————
原文链接:https://blog.csdn.net/weixin_37787043/article/details/104442843————————————————
:https://blog.csdn.net/weixin_37787043/article/details/104442843
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。