请问cortex M3 debug时进入 Hard Fault Handler,怎么分析出错原因

[复制链接]
8646|11
 楼主| nigl 发表于 2011-9-13 15:47 | 显示全部楼层 |阅读模式
请问cortex M3 debug时进入 Hard Fault Handler,怎么分析出错原因
TI_MCU 发表于 2011-9-15 16:31 | 显示全部楼层
本帖最后由 TI_MCU 于 2011-9-15 17:21 编辑

这个在另外一个帖子有讨论
主要是外设初始化,没有正常初始化就开始使用。
另外是memory 冲突,操作到不存在的地址,或者溢出 。或者操作到受保护的地方。
还有就是中断冲突,没有清中断或者优先级没有设置好。
ninitata 发表于 2011-9-16 14:42 | 显示全部楼层
一步一步跟踪
永远的不知 发表于 2011-9-17 15:55 | 显示全部楼层
1# nigl

一般有两种情况,操作未初始化的外设和访问不存在的地址(包括内存堆栈溢出等)。
xifengsong 发表于 2011-9-20 19:23 | 显示全部楼层
我觉得是你的中断向量表不对,这样当你进入别的中断时地址不对,系统就认为是硬件错误,进入硬件中断。你要看看中断向量表里的相应你用到的中断有没有注册。
闇靜-- 发表于 2011-10-15 17:33 | 显示全部楼层
楼主用的是什么编译器啊 ?IAR很容易出错的啊  关掉重新打开一次试试
lcq07 发表于 2011-10-15 22:29 | 显示全部楼层
调试进入fault时,去看sp指针,然后从栈中找出进入fault时的pc值,pc的值就是你出错处的代码地址,一般来说,出现这种情况就像大家说的是你在操作某个外设时没有对相应的外设上电引起的
just_soso 发表于 2011-10-18 09:49 | 显示全部楼层
楼上正解,从初始化一步一步查,那些没有初始化就开始用了最容易造成这种问题。或者简单一点,一部分一部分屏蔽一些功能,看那里出了问题
tobycheng 发表于 2011-10-28 12:22 | 显示全部楼层
一般是在 Startup.s 文件里面的中断声明有问题。
hzhena 发表于 2013-4-25 12:15 | 显示全部楼层
lcq07 发表于 2011-10-15 22:29
调试进入fault时,去看sp指针,然后从栈中找出进入fault时的pc值,pc的值就是你出错处的代码地址,一般来说 ...

嗯 我看到了有个(PC)的值为
0x08001104,可是不懂它代表什么呢?您能解释一下吗
三千花花世界 发表于 2013-4-25 12:43 | 显示全部楼层
hzhena 发表于 2013-4-25 12:15
嗯 我看到了有个(PC)的值为
0x08001104,可是不懂它代表什么呢?您能解释一下吗 ...

说明代码执行到0x08001104之后发生了错误导致了HardFault,0x08001104是堆栈记下的最后一个代码返回地址

你可以在0x08001104的地方加一个断点,运行到该地址以后执行单步操作,应该很快能跟踪到出错代码处。
hzhena 发表于 2013-4-25 14:07 | 显示全部楼层
三千花花世界 发表于 2013-4-25 12:43
说明代码执行到0x08001104之后发生了错误导致了HardFault,0x08001104是堆栈记下的最后一个代码返回地址
...

嘿嘿,请问0x08001104是在哪个地方呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部