打印

程序运行的时候碰到HardFault如何解决呢

[复制链接]
1143|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
罗勋义|  楼主 | 2017-7-26 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jp_chen| | 2017-7-26 16:12 | 只看该作者
一般都是由于对芯片的操作不当而导致的

使用特权

评论回复
板凳
花落辞殇| | 2017-7-26 16:19 | 只看该作者
内存溢出或访问越界了

使用特权

评论回复
地板
会飞的大白| | 2017-7-26 21:54 | 只看该作者
以前碰到这种情况过,一般都是指针使用出错了,瞎乱指

使用特权

评论回复
5
nobleliom| | 2017-7-26 21:58 | 只看该作者
堆栈溢出了吧,加大堆栈空间试试

使用特权

评论回复
6
feelhyq| | 2017-7-26 23:28 | 只看该作者
请百度STM32 Hardfault即可找到答案

使用特权

评论回复
7
大白农| | 2017-7-27 10:02 | 只看该作者
一般的这类错误原因是cpu取指令或数据异常。体现在代码就是数组越界或指针跑飞。

使用特权

评论回复
8
墙上的咖啡| | 2017-7-27 10:06 | 只看该作者
可能是硬件错误,或者地址错误

使用特权

评论回复
9
merry_zsp| | 2017-7-27 19:05 | 只看该作者
怎么才能找到是哪里出错导致的呢?

使用特权

评论回复
10
hello牟| | 2017-7-27 19:07 | 只看该作者
单步调试吧,哪里跑飞,一般就是哪里程序的问题了

使用特权

评论回复
11
新人求带| | 2017-7-27 22:36 | 只看该作者
有些系统软件判定的错误都会触发,以防止片子瞎跑。

使用特权

评论回复
12
在路上的程序猿| | 2017-7-27 22:42 | 只看该作者
我也遇到过这个问题,原因是:某个变量溢出,也就是说你有没有分母为零这种情况存在,或者溢出了被赋值变量的大小

使用特权

评论回复
13
liutongda| | 2017-7-28 19:18 | 只看该作者
当程序出现Falut时会跳转到相应的Fault中断里面,此时压入到堆栈的信息应该就是出现问题代码运行出错Fault的信息,我们要做的就是找到此时压入堆栈的LR的值。

使用特权

评论回复
14
myidear| | 2017-7-28 19:22 | 只看该作者
出现这个错误的理由有很多种,任何不正确的操作,都有可能导致这个问题

使用特权

评论回复
15
ahhsyf| | 2017-7-28 20:56 | 只看该作者
发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、PC、XPRS 寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。

使用特权

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

本版积分规则

11

主题

130

帖子

1

粉丝