STM32分配堆栈空间不足问题原因及解决方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32 分配堆栈空间不足问题原因及解决方法
在开发过程中,我们有时候可能会遇到数据错误的情况,而这个情况发生多数是由于堆栈溢出导致,这里我们将详细讲解复现堆栈溢出会导致的问题及提供相应的解决方法。
先说结论,以STM32F103RCT6 为例,初始的栈空间是1KB,堆空
间是512Byte。
如果动态内存分配需求过多时,需要手动调节堆空间。
在启
动文件startup_stm32f103xe.s 的开头就可以设置堆栈空间大小。
同样,在
STM32CubeMX 中也可对堆栈大小进行修改,在Project -》SetTIngs 选项中
可以对Minimum Heap Size 大小进行更改。
扩大之后即可解决堆栈空间不足
的问题。
遇到的问题
今天在STM32F103RCT6 上,使用malloc()为链表分配内存空间
时,忽然遇到一次分配内存过多而死机的问题。
查阅官方文档发现此型号的单片机FLASH 256KB,RAM 48KB。
我链表的结构体定义如下:
typedef struct LNode{。