打印
[STM32L0]

什么限制了堆栈大小?

[复制链接]
楼主: 封存into
手机看帖
扫描二维码
随时随地手机跟帖
21
淡漠安然| | 2025-6-11 20:14 | 只看该作者 回帖奖励 |倒序浏览
使用更高效的数据结构和算法,减少内存消耗

使用特权

评论回复
22
hilahope| | 2025-6-15 21:51 | 只看该作者
减少局部变量大小、缩短调用链、避免深层中断嵌套,降低栈消耗。

使用特权

评论回复
23
abotomson| | 2025-6-16 11:19 | 只看该作者
修改 .ld 文件中的 STACK_SIZE

使用特权

评论回复
24
jackcat| | 2025-6-16 11:36 | 只看该作者
应用程序的复杂性和运行时需求也会影响堆栈大小的设置。

使用特权

评论回复
25
hilahope| | 2025-6-16 12:11 | 只看该作者
通过调试器监控栈指针和调用栈,确认栈大小是否合理。

使用特权

评论回复
26
elsaflower| | 2025-6-16 13:30 | 只看该作者
编译器和链接器在生成代码时,也会对堆栈大小有一定的限制。

使用特权

评论回复
27
ulystronglll| | 2025-6-16 13:59 | 只看该作者
函数调用时需保存返回地址、参数和局部变量,复杂嵌套或大数组分配会显著增加栈空间占用。

使用特权

评论回复
28
sdlls| | 2025-6-16 14:35 | 只看该作者
堆栈大小受到芯片可用RAM总量的制约。

使用特权

评论回复
29
geraldbetty| | 2025-6-16 16:10 | 只看该作者
STM32的栈大小由 ​​链接脚本(.ld文件)​​ 显式定义,用于告知编译器栈的起始地址和大小。

使用特权

评论回复
30
mmbs| | 2025-6-16 18:07 | 只看该作者
若函数最后一步是调用另一个函数,编译器可能复用当前栈帧

使用特权

评论回复
31
hearstnorman323| | 2025-6-16 19:26 | 只看该作者
修改STM32F4xx_FLASH.ld调整内存布局

使用特权

评论回复
32
houjiakai| | 2025-6-16 20:26 | 只看该作者
堆空间用于malloc等动态分配,其大小由剩余可用RAM决定。

使用特权

评论回复
33
modesty3jonah| | 2025-6-16 21:07 | 只看该作者
合理规划堆栈空间对系统稳定性至关重要。

使用特权

评论回复
34
dspmana| | 2025-6-16 22:33 | 只看该作者
STM32微控制器的RAM大小是固定的,堆栈大小不能超过剩余可用的RAM空间。

使用特权

评论回复
35
pl202| | 2025-6-17 10:36 | 只看该作者
STM32的启动文件 中已预先定义了堆栈大小。

使用特权

评论回复
36
sdCAD| | 2025-6-17 11:35 | 只看该作者
物理内存限制              

使用特权

评论回复
37
tifmill| | 2025-6-17 12:21 | 只看该作者
根据STM32型号的RAM容量(如STM32F103有20KB RAM)和MPU配置,确定栈的最大可能值。

使用特权

评论回复
38
saservice| | 2025-6-17 12:41 | 只看该作者
在栈底写入已知模式,运行后检查是否被覆盖

使用特权

评论回复
39
sdlls| | 2025-6-17 13:26 | 只看该作者
存储局部变量、函数调用上下文              

使用特权

评论回复
40
modesty3jonah| | 2025-6-17 13:49 | 只看该作者
将大数组定义为全局变量或使用动态内存分配

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则