7295|8

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

HardFault如何处理 [复制链接]

                                 应用STM32的时候,有时候会遇到HardFault,这个时候总是有点手无足措,不知道该如何快速定位问题所在,看过<Cortex-M3权威指南>里面关于异常的一些说明,但是还是不会处理,故请教版主。在坛内看到有人说“在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈中最新的函数返回地址,到这个地址上去加断点,一步步根据汇编执行代码”。我尝试了下,但是发现堆栈中存放的是一个系统保留的地址04EDE0。请教下版主,这类问题如何处理,谢谢。
此帖出自stm32/stm8论坛

最新回复

                                   谢谢  详情 回复 发表于 2010-12-24 11:16
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 为何无法上传图片?
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

5
 
进入HardFault, 如果是初次访问错的原因进入的,还有可能从推栈反推。

楼主描述的情况,大概早几条指令就已经错了,
然后一错再错(早不在正常的程序里了),最终跑不下去,出现HardFault.
这个大概只能靠程序员的敏感性。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 


已经查到是数组越界的问题了,但是遇到这种问题有什么通用的好的解决办法呢?
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
5# X-Hawk  

已经查到是数组越界的问题了,但是遇到这种问题有什么通用的好的解决办法呢?
也没想到啥好办法
我一般到处用PRINT_LINE打行号,多打一些总能抓到。

#define PRINT_LINE   do{printf("%s,%d\n", __FILE__, __LINE__);} while(0)
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
5# X-Hawk  

已经查到是数组越界的问题了,但是遇到这种问题有什么通用的好的解决办法呢?
好的办法就是写程序时要格外小心;如果又可能,就在访问数组之前,先对下标做边界检查,检查通过后再访问数组。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

9
 

谢谢
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表