STM32F429 进入HardFault_Handler问题

2019-07-20 10:45发布

本帖最后由 xuehuiai 于 2017-11-28 16:24 编辑

        进行串口数据通信时发现了这个问题,以一定的频率(如10ms、100ms、1000ms)发送数据给单片机,单片机同时也往上位机发送数据,不过几秒后,串口助手接收数据停止了,上位机下发命令单片机也不响应了。为寻找问题,Keil仿真。        现象如下:
              1.发现进入HardFault_Handler()里的while()死循环
              2.为了确定是否是数组越界,仿真查看接收数据的数组发现以下现象:


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xuehuiai
1楼-- · 2019-07-20 15:22
本帖最后由 xuehuiai 于 2017-11-28 16:18 编辑

找到问题根源了,在我的程序里面,对于以下语句进行屏蔽:
        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.堆栈溢出,程序指针指飞
这样看来问题的症结应该是栈溢出。分析得不对,欢迎指出
DreamWaterPro
2楼-- · 2019-07-20 17:38
那些符号的ASCII码和变量中的数值相同。我调试的时候也有一样的问题,估计应该是keil为了方便开发者调试而设计的。
正点原子
3楼-- · 2019-07-20 19:39
 精彩回答 2  元偷偷看……
xuehuiai
4楼-- · 2019-07-21 00:11
DreamWaterPro 发表于 2017-11-27 20:24
那些符号的ASCII码和变量中的数值相同。我调试的时候也有一样的问题,估计应该是keil为了方便开发者调试而 ...

那这个算是正常的咯,至于为什么出现进入HardFault的问题,就得另找原因了

一周热门 更多>