打印
[STM32F1]

hardfault怎么定位

[复制链接]
293|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

使用特权

评论回复
沙发
gongche|  楼主 | 2022-3-5 14:30 | 只看该作者
过程是否正确?
芯片:STM32F103C8T6

使用特权

评论回复
板凳
juventus9554| | 2022-3-5 14:32 | 只看该作者
貌似不对

使用特权

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

使用特权

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

使用特权

评论回复
6
jlyuan| | 2022-3-5 14:38 | 只看该作者
通过菜单栏Peripherals >Core Peripherals >Fault Reports打开fault reports

使用特权

评论回复
7
chuxh| | 2022-3-5 14:40 | 只看该作者
查看使用的是哪个堆栈
查看LR的值可以知道进入hardfault时候程序用的是哪个堆栈。

使用特权

评论回复
8
dingy| | 2022-3-5 14:44 | 只看该作者
说错了,应该是楼下说的,看LR的值。

使用特权

评论回复
9
xxrs| | 2022-3-5 14:46 | 只看该作者
在所有你怀疑的地方打断点 看看是从哪个断点进去的

使用特权

评论回复
10
gongche|  楼主 | 2022-3-5 14:50 | 只看该作者
这是IAR    没有Peripherals

使用特权

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

使用特权

评论回复
12
pengf| | 2022-3-5 14:55 | 只看该作者
IAR没有用过不会**,都是用的Keil

使用特权

评论回复
13
supernan| | 2022-3-5 14:57 | 只看该作者
我有keil的定位方法,但是IAR的没有

使用特权

评论回复
14
gongche|  楼主 | 2022-3-5 14:59 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

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

本版积分规则

768

主题

9410

帖子

2

粉丝