学习STM32单片机的时候,总是能遇到“堆栈”这个概念。分享本文,希望对你理解堆栈有帮助。
对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。堆栈操作由PUSH、POP两条指令来完成。而程序内存可以分为几个区:
-
栈区(stack)
-
堆区(Heap)
-
全局区(static)
-
文字常亮区程序代码区
程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。
栈是从高到低分配,堆是从低到高分配。
普通单片机与STM32单片机中堆栈的区别
普通单片机启动时,不需要用bootloader将代码从ROM搬移到RAM。
但是STM32单片机需要。
这里我们可以先看看单片机程序执行的过程,单片机执行分三个步骤:
-
取指令
-
分析指令
-
执行指令
根据PC的值从程序存储器读出指令,送到指令寄存器。然后分析
标签:程序,嵌入式,STM32,单片机,指令,堆栈,分配 From: https://blog.csdn.net/weixin_41114301/article/details/140585696