STM32栈stack 堆栈 注意事项 Stack_Size EQU 0x00000400
标题一、看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相关推荐
- stm32 堆和栈(stm32 Heap Stack)
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的. 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { whil ...
- stm32 堆和栈(stm32 Heap Stack)【worldsing笔记】
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的. 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { whil ...
- 再次理解STM32中的堆栈机制
再次理解STM32中的堆栈机制 刚拿到STM32时,你只编写一个死循环 void main() { while(1); }BUILD://Program Size: Code=340 RO-data= ...
- esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈
学习STM32单片机的时候,总是能遇到"堆栈"这个概念.分享本文,希望对你理解堆栈有帮助. 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数 ...
- 一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
大家好,我是无际. 有一周没水文了,俗话说夜路走多了难免遇到鬼. 最近就被一个热心网友喷了. 说我的文章没啥营养,所以今天来一篇烧脑的. 哈哈,开个玩笑,不要脸就没人能把我绑架. 主要是最近研发第二代 ...
- 在java的实现栈的插入数据_Java实现数据结构栈stack和队列Queue
回顾JDK提供的集合类 容器(集合)框架如下: 集合类存放于java.util包中.集合类存放的都是对象的引用,而非对象本身. 集合类型主要有3种:set(集).list(列表)和map(映射). C ...
- 栈(Stack) 任何程序执行前,预先分配一固定长度的内存空间
内存是什么及其用处,但内存是不能随便使用的,因为操作系统自己也要使用内存,而且现在的操作系统正常情况下都是多任务操作系统,即可同时执行多个程序,即使只有一个CPU.因此如果不对内存访问加以节制,可能会 ...
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: 堆栈是栈 JVM栈和本地方法栈划分 Java中的堆,栈和c/c++中的堆,栈 数据结构层面的堆,栈 os层面 ...
- (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)(C/C++存储类型总结)(内存管理)
文章目录 bss段 data段 text段 堆(heap) 栈(stack) 一个程序本质上都是由 bss段.data段.text段三个组成的. 存储类型总结 bss段 bss段(bss segmen ...
最新文章
- 皮一皮:南北差异之相亲相爱的一家人系列...
- rpm 安装 忽略依赖_CentOS 7 安装 MySQL 5.7 详细教程及常见问题
- 解决Cesium无法加载出地球的问题
- python mapreduce函数_Map-reduce在Python高阶函数中的应用,python,用法,之,mapreduce
- 实验4 贪心法(作业调度问题)
- c#自定义Json类
- Gym100187I
- 数据库的两个好帮手:pagehack和pg_xlogdump
- Updates were rejected because the tip of your current branch is behind
- 输入关键字生成对联_教你一秒变大师,亲手提笔写对联
- word2vec的理解
- my97Date如何多选日期且无重复日期
- 利用【数据链接属性】对话框,创建连接字符串
- div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法
- 应用wms仓库管理系统,提高第三方物流企业竞争力
- 分享磁盘空间不足的5个处理方法
- win7文件共享服务器搭建,Win7下搭建web服务器实现数据共享的简单步骤
- BZOJ 4480 [JSOI2013] 快乐的jyy
- 啥样的广告语省钱,高效?
- Tekton 流水线发布首个官方 Beta 版本