STM32堆栈溢出引起的问题 变量异常变化且产生Hard Fault

这两天遇到一个很奇怪的问题,在串口通信时串口缓冲区写指针出现异常改变,使用一个vu32的变量累积穿插中断产生的次数,发现该变量变化也异常。并且最终导致Hard_Fault。

一开始怀疑是数组越界,仔细检查没有发现数组访问越界的问题;后来怀疑是系统时钟配置或NVIC配置异常,检查后也没发现问题。

最后整理代码,删掉main函数开始的一个500字节的数组定义(该数组并没有使用到),程序恢复正常。

检查工程的linker配置,发现stack(栈)配置为0x0800(2048)Bytes,heap(堆)配置为0x0200(512)Bytes,所以在main函数中定义500字节数组很可能导致程序运行时堆空间溢出了。

1人评论了“STM32堆栈溢出引起的问题 变量异常变化且产生Hard Fault”

发表评论

邮箱地址不会被公开。 必填项已用*标注