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

[复制链接]
813|15
手机看帖
扫描二维码
随时随地手机跟帖
jp_chen| | 2017-7-26 16:12 | 显示全部楼层
一般都是由于对芯片的操作不当而导致的

使用特权

评论回复
花落辞殇| | 2017-7-26 16:19 | 显示全部楼层
内存溢出或访问越界了

使用特权

评论回复
会飞的大白| | 2017-7-26 21:54 | 显示全部楼层
以前碰到这种情况过,一般都是指针使用出错了,瞎乱指

使用特权

评论回复
nobleliom| | 2017-7-26 21:58 | 显示全部楼层
堆栈溢出了吧,加大堆栈空间试试

使用特权

评论回复
feelhyq| | 2017-7-26 23:28 | 显示全部楼层
请百度STM32 Hardfault即可找到答案

使用特权

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

使用特权

评论回复
墙上的咖啡| | 2017-7-27 10:06 | 显示全部楼层
可能是硬件错误,或者地址错误

使用特权

评论回复
merry_zsp| | 2017-7-27 19:05 | 显示全部楼层
怎么才能找到是哪里出错导致的呢?

使用特权

评论回复
hello牟| | 2017-7-27 19:07 | 显示全部楼层
单步调试吧,哪里跑飞,一般就是哪里程序的问题了

使用特权

评论回复
新人求带| | 2017-7-27 22:36 | 显示全部楼层
有些系统软件判定的错误都会触发,以防止片子瞎跑。

使用特权

评论回复
我也遇到过这个问题,原因是:某个变量溢出,也就是说你有没有分母为零这种情况存在,或者溢出了被赋值变量的大小

使用特权

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

使用特权

评论回复
myidear| | 2017-7-28 19:22 | 显示全部楼层
出现这个错误的理由有很多种,任何不正确的操作,都有可能导致这个问题

使用特权

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

使用特权

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

本版积分规则

11

主题

130

帖子

0

粉丝