请教,STM32的HardFault_Handler的问题

[复制链接]
33271|33
 楼主| 西风骑士 发表于 2008-4-10 14:12 | 显示全部楼层 |阅读模式
程序运行到sprintf时死机了,调式后发现进入了HardFault_Handler里死循环了。请问这个问题可能由啥原因引起的?

还有貌似选了优化后,有时sprintf出来的数据会有错误?这个可能由啥原因引起的?

谢谢!
香水城 发表于 2008-4-10 21:08 | 显示全部楼层

可能是存储器的分配有问题

bolin1981 发表于 2009-1-16 11:54 | 显示全部楼层

HardFault_Handler问题

这种问题的原因很难查,版主说的原因是有可能的。
我有过类似的经历!
na_sh13 发表于 2010-9-20 10:10 | 显示全部楼层
我也遇到这种问题,跳进HardFault_Handler里,原因暂时未查明
xixihaha0 发表于 2010-9-20 12:34 | 显示全部楼层
一般都是非法访问对应地址的数据出错,检查是否堆栈溢出,数组越界等等
xjwbh 发表于 2010-9-20 13:00 | 显示全部楼层
我也遇到过几块板,后来重新焊接了一下就没再出现过了。
xsgy123 发表于 2010-11-10 09:43 | 显示全部楼层
之能慢慢调试,慢慢查了
vigia 发表于 2010-11-10 10:00 | 显示全部楼层
HardFault_Handler的调试 最简单的办法:

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

这个办法很好使的,我一直用的,找问题很快的。

评分

参与人数 1威望 +12 收起 理由
nyszx + 12 很给力!

查看全部评分

sibaidong 发表于 2010-11-11 10:32 | 显示全部楼层
不知道楼主开发平台是什么?
本人最初使用时常常遇到这个问题,说起来很不好意思,原因都是自己忘加STM32的中断汇编代码.s文件。
希望楼主犯的不是这种低级错误:)
haibianfeng 发表于 2010-12-10 17:14 | 显示全部楼层
9# vigia


你好请问你说的这个方法怎么操作呢,我不会用啊 杯具
Aaron238 发表于 2010-12-10 23:00 | 显示全部楼层
操作了不改动的地址! 比如指针  要是不是 32BIT 对齐 强势成 8BIT 那就跑到那里去了!!
say_sth_freely 发表于 2010-12-13 18:28 | 显示全部楼层
我用的iAR,IAR中有个CallStack的工具,可以很简单的看到你的函数嵌套情况
xuehui869 发表于 2010-12-14 16:57 | 显示全部楼层
忘加STM32的中断汇编代码.s文件.

-----
这种编译器IAR 不会报错的
STARM 发表于 2010-12-14 17:45 | 显示全部楼层
在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈中最新的函数返回地址,到这个地址上去加断点,一步步根据汇编执行代码。

学习了
xiepengchenghn 发表于 2010-12-22 11:22 | 显示全部楼层
gf86530430 发表于 2011-2-19 12:37 | 显示全部楼层
请问您说的方法具体如何做!

我也有类似的问题,请教一下!
gf86530430 发表于 2011-2-19 12:37 | 显示全部楼层
9# vigia

请教详细方法!!!
gf86530430 发表于 2011-2-19 12:38 | 显示全部楼层
HardFault_Handler的调试 最简单的办法:

在进入HardFault_Handler之后,根据堆栈指针查看堆栈,找到堆栈中最新的函数返回地址,到这个地址上去加断点,一步步根据汇编执行代码。很快就能找到出错原因,大多数是数 ...
vigia 发表于 2010-11-10 10:00



具体如何操作!!
aaa2742 发表于 2011-4-10 13:41 | 显示全部楼层
跟没说一样,知其然不知其所以然:@
suqiusen202 发表于 2011-4-10 14:04 | 显示全部楼层
学习学习i
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

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