首页 >> 大全

堆栈记录(stm32为例)

2023-12-14 大全 27 作者:考证青年

目录

1、堆栈是什么

2、堆栈的意义

1、堆栈是什么

使用keil对一个未编译的工程编译(如果是编译过的不会这样打印,直接错误警告)

其中

.map文件对其做了记录,在编译器(这里是keil)输出的路径下

其中RW是SRAM,ROM是Flash

栈顶指针应该是(进入调试后,查看寄存器)

这里我们看下是的存储信息,可以看到其实有两种,一种是64KB,一种是128KB,这里不讨论差异,用64k肯定是没问题的

从keil设置来看

分配了64k的ROM

RAM大小为20K

stm32堆栈分配大小__stm32f4堆栈空间

然后在下载这里可以看到选的是128k的这种芯片模型

上面还可以看到起始地址,起始地址可以在md.s文件中进行配置

当然我们如果关注keil下面的这个符号,也可以比较容易的编辑

这个是keil可视化的配置,很有意思的

详情见这篇博客Keil 使用说明_滴水成河 百川归海-CSDN博客

2、堆栈的意义

前面只是说了堆栈是什么,但是为什么要设置堆栈还没有说明白,因此这里就说明下为什么要设置堆区和栈区。

程序编译完成之后,静态变量以及全局变量等就都已经分配好内存地址了,但是在函数运行的时候还会产生很多局部变量,这些局部变量就需要我们给他分配栈空间,当中断来临的时候,也需要将函数指针入栈,保护现场,这样才能方便就是中断处理完成之后再回到之前的函数。

而堆是给程序员自行调用的,就是使用这个函数来分配内存空间,一般初学者都不太用的到这个函数。

一般而言,栈区是从高到低进行分配,堆区从低到高分配。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了