打印

硬件调试进入void HardFaultException(void)

[复制链接]
1041|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaolong12|  楼主 | 2016-9-16 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
喵喵小星人| | 2016-9-16 16:43 | 只看该作者
这种,一般是堆栈溢出或者指针非法访问引起的

使用特权

评论回复
板凳
maninman1981| | 2016-9-17 10:17 | 只看该作者
首先,你在 void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } } 里面设置一个断点,看程序运行的时候会不会进去,进去则说明你的程序逻辑上有问题,有可能是数组越界之类的错误;

使用特权

评论回复
地板
yysforever| | 2016-9-18 14:09 | 只看该作者
进入中断以后出现根据sp寄存器查看堆栈,查看指针是指向哪里呢?

使用特权

评论回复
5
冰是睡着的冰| | 2016-9-18 15:51 | 只看该作者
编译的时候没有错误吗?提示什么呢?

使用特权

评论回复
6
jouney316| | 2016-9-18 20:30 | 只看该作者
可能是堆栈溢出或者数据溢出的问题

使用特权

评论回复
7
Dennis-Zhou| | 2016-9-18 22:03 | 只看该作者
一般是指针或者数组过界引起的

使用特权

评论回复
8
l科科1987| | 2016-9-19 15:14 | 只看该作者
以前碰到过,没初始化或者使能外设,然后操作外设,就出现错误了。

使用特权

评论回复
9
dongbaohui| | 2016-9-19 19:39 | 只看该作者
好像是发生了硬件错误中断,记得是还在学校玩cortex-M3核的ARM板时也遇到了这样的错误,应该是错误的操作了硬件,当是我的情况是没有打开相应的硬件模块但操作了相应的硬件而导致了错误。没仔细看你的程序,不知道是不是也是这样的原因。

使用特权

评论回复
10
原味_郭| | 2016-9-20 12:10 | 只看该作者
这或许跟KEIL编译器有关,我碰到过两次,感觉都好像是变量定义的位置对编译器的影响造成的,最后一次是单步调试观察到底死在哪里,最终发现访问一个结构体的变量时跳入HardFault_Handler,然后把这个结构体放到其它地方定义就解决问题,相当纳闷,不知道是不是KEIL的BUG。

使用特权

评论回复
11
ahhsyf| | 2016-9-21 17:37 | 只看该作者
基本上是数组越界的事,但不执行,看看到哪一步之后跳入错误中断,找数组就行了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

185

帖子

0

粉丝