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

开发过程中遇到如下问题

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

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

问题原因:

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

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

修改堆栈空间的大小:

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

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

 

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

猜你喜欢

转载自blog.csdn.net/qq_38584212/article/details/131639073
今日推荐