发新帖我要提问
12
返回列表
打印

请教,STM32的HardFault_Handler的问题

[复制链接]
楼主: 西风骑士
手机看帖
扫描二维码
随时随地手机跟帖
21
zgwuss| | 2011-12-28 11:18 | 只看该作者 回帖奖励 |倒序浏览
HardFault_Handler的调试 最简单的办法:

在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈中最新的函数返回地址,到这个地址上去加断点,一步步根据汇编执行代码。很快就能找到出错原因,大多数是数组溢出,或者是指针初始化的问题。

谢谢9楼的,我郁闷了两天经你一说,马上找到问题,指针没初始化。

使用特权

评论回复
22
jizhiyan| | 2012-3-22 12:22 | 只看该作者
9# vigia 你好,请教个问题,我的call stack window里的地址是0x08000c54,为了找到最新函数的返回地址,我在merroy中查看0x08000c54地址的内容,知道返回的地址是:0xBF00BF00,我怎么加断点呢,这个地址具体在哪里???我用的编译器是keil,开发板是stm32f4.谢谢你

使用特权

评论回复
23
jizhiyan| | 2012-3-26 15:38 | 只看该作者
22# zgwuss 可是我看不懂反汇编,有什么资料介绍给我看看??嘿嘿

使用特权

评论回复
24
RexZheng| | 2012-12-29 09:33 | 只看该作者
HardFault_Handler的调试 最简单的办法:

在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈中最新的函数返回地址,到这个地址上去加断点,一步步根据汇编执行代码。很快就能找到出错原因,大多数是数组溢出,或者是指针初始化的问题。

多谢指点,很快找到原因:指针初始化错误

使用特权

评论回复
25
菜鸟+新手| | 2013-1-6 10:54 | 只看该作者
我也遇到了,是非法访问寄存器,对寄存器的操作不对

使用特权

评论回复
26
huangzh198| | 2013-3-23 16:27 | 只看该作者
xuehui869 发表于 2010-12-14 16:57
忘加STM32的中断汇编代码.s文件.

-----

我在调试串口的时候出现这个问题。你那个.S文件是哪个?startup_stm32f0xx.s这个么?怎样添加?是添加在工程里面还是在C函数里include?

使用特权

评论回复
27
busdriver| | 2013-5-19 18:11 | 只看该作者
指针操作数组的情况下,容易出现HardFault_Handler错误。

使用特权

评论回复
28
香水城| | 2013-5-20 14:02 | 只看该作者
Hard Fault的诊断:如何在程序跳到hard fault时提取出错信息

Hard Fault的诊断.pdf

227.31 KB

使用特权

评论回复
29
逆序排列| | 2013-12-26 15:40 | 只看该作者
香水城 发表于 2013-5-20 14:02
Hard Fault的诊断:如何在程序跳到hard fault时提取出错信息

好资料,收藏了,谢谢!!!

使用特权

评论回复
30
sun1238898| | 2014-7-3 10:46 | 只看该作者
香水城 发表于 2013-5-20 14:02
Hard Fault的诊断:如何在程序跳到hard fault时提取出错信息

谢谢香主的资料

使用特权

评论回复
31
七毛07| | 2014-9-9 22:31 | 只看该作者
都是大神啊

使用特权

评论回复
32
zjf199007| | 2014-12-11 10:58 | 只看该作者
xiexie ...............

使用特权

评论回复
33
wxjcan| | 2014-12-11 11:29 | 只看该作者
好方法 学习了

使用特权

评论回复
34
andy93762| | 2015-5-12 19:05 | 只看该作者
vigia 发表于 2010-11-10 10:00
HardFault_Handler的调试 最简单的办法:

在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈 ...

你好,进入hardfault后,在找到的函数处加断点,也进不去断点那里啊,程序一直在hardfault里面执行,出不去啊。

使用特权

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

本版积分规则