打印
[STM32F1]

hardfault怎么定位

[复制链接]
1126|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
过程是否正确?
芯片:STM32F103C8T6

使用特权

评论回复
沙发
gongche|  楼主 | 2020-3-8 12:33 | 只看该作者

使用特权

评论回复
板凳
tian111| | 2020-3-8 12:36 | 只看该作者
貌似不对

使用特权

评论回复
地板
gongche|  楼主 | 2020-3-8 12:42 | 只看该作者
如果错误应该怎么做? 下一步我该怎么做才能定位到问题代码?

使用特权

评论回复
5
llljh| | 2020-3-8 12:45 | 只看该作者
关于这个定位的问题,搜索下别人的**,已经讲过好多次了,应该是通过SP的值来看的。

使用特权

评论回复
6
pengf| | 2020-3-8 12:51 | 只看该作者
通过菜单栏Peripherals >Core Peripherals >Fault Reports打开fault reports

使用特权

评论回复
7
houcs| | 2020-3-8 12:56 | 只看该作者
查看使用的是哪个堆栈
查看LR的值可以知道进入hardfault时候程序用的是哪个堆栈。

使用特权

评论回复
8
ousj| | 2020-3-8 12:59 | 只看该作者
说错了,应该是楼下说的,看LR的值。

使用特权

评论回复
9
songqian17| | 2020-3-8 13:05 | 只看该作者
在所有你怀疑的地方打断点 看看是从哪个断点进去的

使用特权

评论回复
10
gongche|  楼主 | 2020-3-8 13:08 | 只看该作者
这是IAR    没有Peripherals

使用特权

评论回复
11
gongche|  楼主 | 2020-3-8 13:11 | 只看该作者
如图   LR是 0xFFFFFFF1 SP是  0x20000828 通过SP在内存中找到 0x20000924 实际上就是R1的值 然后再最有窗口反汇编找到的是一个结构体 并不是执行错误的语句 所以下一步不知道怎么做了

使用特权

评论回复
12
renyaq| | 2020-3-8 13:16 | 只看该作者
IAR没有用过不会**,都是用的Keil

使用特权

评论回复
13
gongche|  楼主 | 2020-3-8 13:20 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
14
宇宙星辰| | 2020-3-11 17:39 | 只看该作者
学习一下

使用特权

评论回复
15
liklon| | 2020-3-11 17:49 | 只看该作者
本帖最后由 liklon 于 2020-3-11 17:52 编辑

根据栈里面的信息去查的,如果想通过工具定位到具体位置,刚好在BabyOS中加入了定位Hardfault的功能模块,欢迎体验一下,
移步这个帖子https://bbs.21ic.com/forum.php?mo ... 922668&pid=10975896
或者使用这个开源代码试试https://gitee.com/Armink/CmBacktrace

使用特权

评论回复
16
zhazhahua| | 2020-3-11 19:35 | 只看该作者
我有keil的定位方法,但是IAR的没有

使用特权

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

本版积分规则

768

主题

9410

帖子

2

粉丝