跳转到主要内容

堆栈

单片机堆栈是什么?它的原理和作用又是什么?

cathy /

<strong>什么是单片机堆栈?</strong>

在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

<strong>它的作用</strong>

1、子程序调用和中断服务时,CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。

2、保护现场/恢复现场

3、数据传输

<strong>单片机堆栈原理</strong>

堆栈区由特殊功能寄存器堆栈指针SP管理。堆栈区可以安排在RAM区任意位置,但一般不安排在工作寄存器区和可按位寻址的RAM区,通常是放在RAM区靠后的位置。

再次理解STM32中的堆栈机制

cathy /

刚拿到STM32时,你只编写一个死循环

<center><img src="http://mouser.eetrend.com/files/2018-01/wen_zhang_/100009807-33339-d1.p…; alt=“” width="800"></center>

编译后,就会发现这么个程序已用了1600多的RAM,这要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了,分析.map文件,你会发现是堆和栈占用的

在startup_stm32f10x_md.s文件中,它的前面几行就有以下定义: