打印
[STM32F4]

stm32cubeide在堆栈溢出时不提示错误

[复制链接]
170|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我的牙白|  楼主 | 2025-7-7 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在测试代码时,看看栈空间是否足够。我发现在项目的.ld文件中,栈大小是这样定义的:
_Min_Heap_Size = 0x200;
_Min_Stack_Size = 0x400;
我测试这个设置,当我超出定义的内存大小时,stm32cubeide是否会报错。
我在一个函数内部声明了一个局部变量,并检查了栈指针。当我在main函数中调用这个函数时,栈指针似乎指向了其他地址,比如0x1FFFFFF6,这是代码段的内存区域,而不是SRAM。同样的情况也发生在中断服务程序(ISR)中声明局部变量时。
问题是,为什么当我超出定义的栈大小时,stm32cubeide没有提示错误?

使用特权

评论回复
沙发
jcky001| | 2025-7-7 16:02 | 只看该作者
STM32 的 Cortex-M4 内核 不会自动检测堆栈溢出,除非手动配置监控。

使用特权

评论回复
板凳
elephant00| | 2025-7-7 16:03 | 只看该作者
高优化级别可能改变变量存储位置,导致堆栈使用情况与预期不符,但编译器不会报错。

使用特权

评论回复
地板
cr315| | 2025-7-7 17:02 | 只看该作者
链接脚本仅定义最小堆栈,不检查运行时溢出。

使用特权

评论回复
5
flycamelaaa| | 2025-7-7 17:04 | 只看该作者
STM32 的堆栈从高地址向低地址增长,溢出时 SP 可能指向 非法地址。

使用特权

评论回复
6
powerantone| | 2025-7-7 19:04 | 只看该作者
可能是链接脚本配置错误。

使用特权

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

本版积分规则

34

主题

34

帖子

0

粉丝