STM32/GD32学习指南-踩坑之(二)关于堆栈空间大小配置的问题

开发过程中遇到如下问题

  1. 代码能编译通过
  2. 程序莫名卡死,陷入死循环
  3. 触发硬件错误的中断

打断点后,进入如下图所示的硬件错误中断函数中

问题原因:

因为之前做ZYNQ开发时,一般RAM都很大,使用内存资源时也比较无拘无束,但是单片机开发需要严格控制堆栈内存的使用和分配。

函数内部局部变量申请的空间太大,超过了初始化分配的栈空间内存,栈空间分配的不够用就会导致硬件错误中断的发生。

修改堆栈空间的大小:

图中Stack_Size就是栈空间大小的配置,一般函数内的局部变量占用栈空间,并且函数执行完毕后会被自动回收,根据自己的片子手册以及代码的编写使用,合理分配即可,例如图中的0x00000800,十进制是2048,即2KB空间的栈内存

图中Heap_Size就是堆空间大小的配置,堆空间主要是程序员自己申请的空间,例如malloc,new申请的内存占用堆空间,用完后需要使用free或delete手动释放,否则会造成内存泄漏、野指针的问题。根据自己的片子手册以及代码的编写使用,合理分配即可,例如图中的0x00000400,十进制是1024,即1KB空间的堆内存

 

希望大家点赞、收藏、关注哦!!!ヾ(o◕∀◕)ノ

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

披着假发的程序唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值