本帖最后由 xuehuiai 于 2017-11-28 16:24 编辑
进行串口数据通信时发现了这个问题,以一定的频率(如10ms、100ms、1000ms)发送数据给单片机,单片机同时也往上位机发送数据,不过几秒后,串口助手接收数据停止了,上位机下发命令单片机也不响应了。为寻找问题,Keil仿真。 现象如下:
1.发现进入HardFault_Handler()里的while()死循环
2.为了确定是否是数组越界,仿真查看接收数据的数组发现以下现象:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
找到问题根源了,在我的程序里面,对于以下语句进行屏蔽:
char for_print1[30] = {0};
char for_print2[30] = {0};
char for_print3[30] = {0};
char for_print4[30] = {0};
char for_print5[30] = {0};
char for_print6[30] = {0};
程序正常运行,测试大约半个小时了,没有进入HardFault_Handler()
原因分析,一些资料显示HardFault_Handler出现的情况一般有两种:
1.数组越界
2.堆栈溢出,程序指针指飞
这样看来问题的症结应该是栈溢出。分析得不对,欢迎指出
那这个算是正常的咯,至于为什么出现进入HardFault的问题,就得另找原因了
一周热门 更多>