keil平台的学习(单片机)

文章介绍了栈和堆在内存中的作用,栈用于存放临时数据如函数参数和局部变量,堆则用于动态申请空间。堆从低地址向上增长,栈从高地址向下减少,两者由指针管理。栈溢出到堆可能引发错误,而堆向上溢出会直接导致问题。此外,文章还提到了使用Keil编译器将项目转换为bin文件的过程。
摘要由CSDN通过智能技术生成

一、栈和堆

   栈:存放临时数据。(函数的参数或者是局部变量)
   堆:使用很灵活,可以用来动态申请一部分空间,是公用的部分。
在这里插入图片描述

参考单片机的堆和栈(Heap & Stack)详解

  扩展:堆和栈,一般堆是由低地址往上增长栈是由高地址往下减少,都是连续的。所以使用到了一个栈顶指针__initial_sp,而堆是有两个指针,一个指向顶部__heap_limit一个指向基地址__heap_base。

   注意: 栈空间可以向下溢出到堆空间,程序不会出错,但是栈继续向下溢出直到栈空间已经满了,这时栈内容就进入了全局变量的空间,程序就会出现莫名的错误。但是堆空间一旦向上溢出就会出错。
在这里插入图片描述

参考stm32等cortex-m内核单片机启动文件执行过程详解(通俗易懂!!!)

以下是一个项目的程序内容:
这是在 .map 文件中的一段
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、keil编译bin文件

   fromelf.exe --bin --output=@L.bin !L
具体使用参见以下内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值