一、背景
1.MDK5.29
2.芯片:STM32F103RCT6
3.FLASH代码:正点原子代码
二、问题
1.移植以前使用过的FLASH读写代码,发现程序运行后出现HardFault_Handler;
三、分析
1.程序中已将其他代码全部屏蔽,只留下FLASH读写函数,但运行函数出现同样的错误;
2.定位到错误位置发现,是一个变量定义的位置;
3.出现HardFault_Handler问题,一般是越界和内存泄漏;
4.又想到出现段错误的地方没问题,但是造成这里定义变量出错的可能是之前哪里有问题;
5.所以我关注字符串相关变量;
6.发现为了将4KB的数据读取出来,定义了一个4KB大小的全局变量;同时突然想到新建的工程默认栈空间只有1KB大小;
7.所以猜测是不是,栈空间被占满,之后再申请栈空间导致了栈空间不够,内存越界造成HardFault_Handler;
四、解决
1.将栈空间定义为8KB;
2.运行程序,代码正常运行;