打印
[STM32F1]

求助 hardfault如何定位?

[复制链接]
1602|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljwcoke|  楼主 | 2018-7-26 11:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
IDE:IAR
芯片:STM32F103C8T6

请问大家,图中的过程是否正确?如果错误应该怎么做? 下一步我该怎么做才能定位到问题代码?
沙发
HKingS| | 2018-7-26 11:24 | 只看该作者
关于这个定位的问题,搜索下别人的**,已经讲过好多次了,应该是通过SP的值来看的。

使用特权

评论回复
板凳
幸福小强| | 2018-7-26 16:39 | 只看该作者
通过菜单栏Peripherals >Core Peripherals >Fault Reports打开fault reports

使用特权

评论回复
地板
幸福小强| | 2018-7-26 16:40 | 只看该作者

使用特权

评论回复
5
幸福小强| | 2018-7-26 16:40 | 只看该作者
查看使用的是哪个堆栈

查看LR的值可以知道进入hardfault时候程序用的是哪个堆栈。


使用特权

评论回复
6
静听风易| | 2018-7-26 22:38 | 只看该作者
HKingS 发表于 2018-7-26 11:24
关于这个定位的问题,搜索下别人的**,已经讲过好多次了,应该是通过SP的值来看的。 ...

说错了,应该是楼下说的,看LR的值。

使用特权

评论回复
7
heimaojingzhang| | 2018-7-27 08:30 | 只看该作者
在所有你怀疑的地方打断点 看看是从哪个断点进去的

使用特权

评论回复
8
ljwcoke|  楼主 | 2018-7-28 11:47 | 只看该作者
幸福小强 发表于 2018-7-26 16:39
通过菜单栏Peripherals >Core Peripherals >Fault Reports打开fault reports

这是IAR    没有Peripherals

使用特权

评论回复
9
ljwcoke|  楼主 | 2018-7-28 11:50 | 只看该作者
静听风易 发表于 2018-7-26 22:38
说错了,应该是楼下说的,看LR的值。

如图   LR是 0xFFFFFFF1 SP是  0x20000828 通过SP在内存中找到 0x20000924 实际上就是R1的值 然后再最有窗口反汇编找到的是一个结构体 并不是执行错误的语句 所以下一步不知道怎么做了

使用特权

评论回复
10
huangcunxiake| | 2018-7-28 19:41 | 只看该作者
IAR没有用过不会**,都是用的Keil

使用特权

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

本版积分规则

1

主题

4

帖子

1

粉丝