标题一、看STM32启动文件,例如startup_stm32f10x_cl.s

一般默认是Stack_Size EQU 0x00000400
表示工程中栈大小是1024字节,即局部变量不能大于1024字节。
如果函数中出现局部变量例如u8 temp[4000];
启动文件的栈应该修改为Stack_Size EQU 0x00001000 ,此时栈是4096字节。

特别注意:一个函数中定义的所有局部变量,加起来不能大于工程的栈大小,否则程序肯定会出现内存溢出,导致复位。

备注:栈stack是一块程序运行时用来存储临时变量的内存RAM空间。栈一般静态分配,并且后进先出,栈的生命周期从程序的起始直到程序结束。一个函数返回,其用到的栈空间就被释放给后续函数使用。

标题二、判断STM32编译后代码是否超出芯片容量

例如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)

工程代码使用的FLASH和ARM均小于CPU的额定大小,正常。

STM32栈stack 堆栈 注意事项 Stack_Size EQU 0x00000400相关推荐

  1. stm32 堆和栈(stm32 Heap Stack)

    关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的. 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { whil ...

  2. stm32 堆和栈(stm32 Heap Stack)【worldsing笔记】

    关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的. 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { whil ...

  3. 再次理解STM32中的堆栈机制

    再次理解STM32中的堆栈机制 刚拿到STM32时,你只编写一个死循环 void main() { while(1); }BUILD://Program Size: Code=340 RO-data= ...

  4. esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈

    学习STM32单片机的时候,总是能遇到"堆栈"这个概念.分享本文,希望对你理解堆栈有帮助. 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数 ...

  5. 一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc

    大家好,我是无际. 有一周没水文了,俗话说夜路走多了难免遇到鬼. 最近就被一个热心网友喷了. 说我的文章没啥营养,所以今天来一篇烧脑的. 哈哈,开个玩笑,不要脸就没人能把我绑架. 主要是最近研发第二代 ...

  6. 在java的实现栈的插入数据_Java实现数据结构栈stack和队列Queue

    回顾JDK提供的集合类 容器(集合)框架如下: 集合类存放于java.util包中.集合类存放的都是对象的引用,而非对象本身. 集合类型主要有3种:set(集).list(列表)和map(映射). C ...

  7. 栈(Stack) 任何程序执行前,预先分配一固定长度的内存空间

    内存是什么及其用处,但内存是不能随便使用的,因为操作系统自己也要使用内存,而且现在的操作系统正常情况下都是多任务操作系统,即可同时执行多个程序,即使只有一个CPU.因此如果不对内存访问加以节制,可能会 ...

  8. JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结

    俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: 堆栈是栈 JVM栈和本地方法栈划分 Java中的堆,栈和c/c++中的堆,栈 数据结构层面的堆,栈 os层面 ...

  9. (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)(C/C++存储类型总结)(内存管理)

    文章目录 bss段 data段 text段 堆(heap) 栈(stack) 一个程序本质上都是由 bss段.data段.text段三个组成的. 存储类型总结 bss段 bss段(bss segmen ...

最新文章

  1. 皮一皮:南北差异之相亲相爱的一家人系列...
  2. rpm 安装 忽略依赖_CentOS 7 安装 MySQL 5.7 详细教程及常见问题
  3. 解决Cesium无法加载出地球的问题
  4. python mapreduce函数_Map-reduce在Python高阶函数中的应用,python,用法,之,mapreduce
  5. 实验4 贪心法(作业调度问题)
  6. c#自定义Json类
  7. Gym100187I
  8. 数据库的两个好帮手:pagehack和pg_xlogdump
  9. Updates were rejected because the tip of your current branch is behind
  10. 输入关键字生成对联_教你一秒变大师,亲手提笔写对联
  11. word2vec的理解
  12. my97Date如何多选日期且无重复日期
  13. 利用【数据链接属性】对话框,创建连接字符串
  14. div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法
  15. 应用wms仓库管理系统,提高第三方物流企业竞争力
  16. 分享磁盘空间不足的5个处理方法
  17. win7文件共享服务器搭建,Win7下搭建web服务器实现数据共享的简单步骤
  18. BZOJ 4480 [JSOI2013] 快乐的jyy
  19. 啥样的广告语省钱,高效?
  20. Tekton 流水线发布首个官方 Beta 版本

热门文章

  1. 解决隐马模型中预测问题的算法是?
  2. 进程和线程的区别及python多进程、多线程实现
  3. 学linux,不用必须使用linux的图形界面
  4. Hofzinser Ace Problem(2)——风格迥异于刘谦的作品
  5. Emacs_243_使用avy快速跳转
  6. cocos creater H5游戏优化
  7. Interested
  8. C/C++代码规范点检表
  9. DirectDraw简介
  10. .exe文件默认打开方式被修改后,所有exe文件全部无效的解决方法