2024年2月20日发(作者:)
STM32 分配堆栈空间不足问题原因及解决方法
在开发过程中,我们有时候可能会遇到数据错误的情况,而这个情况
发生多数是由于堆栈溢出导致,这里我们将详细讲解复现堆栈溢出会导致的
问题及提供相应的解决方法。
先说结论,以 STM32F103RCT6 为例,初始的栈空间是 1KB,堆空
间是 512Byte。如果动态内存分配需求过多时,需要手动调节堆空间。在启
动文件 startup_stm32f103xe.s 的开头就可以设置堆栈空间大小。同样,在
STM32CubeMX 中也可对堆栈大小进行修改,在 Project -》 SetTIngs 选项中
可以对 Minimum Heap Size 大小进行更改。扩大之后即可解决堆栈空间不足
的问题。
遇到的问题
今天在 STM32F103RCT6 上,使用 malloc() 为链表分配内存空间
时,忽然遇到一次分配内存过多而死机的问题。查阅官方文档发现此型号的
单片机 FLASH 256KB,RAM 48KB。我链表的结构体定义如下:
typedef struct LNode{
发布评论