亲自解决STM32 HardFault_Handler错误记录
来源:互联网 发布:全国地图软件下载 编辑:程序博客网 时间:2024/05/24 02:38
HardFault_Handler错误的原因最最多的原因是数组越界以及指针指飞,其实这两个是差不多的,都是访问了不该访问的地方导致了错误,就像一个路痴,漫无目的的走到了一个陌生的地方……然后就迷路了……然后就木有然后了……(貌似是第一次写原创,我该如何装成经常写的样子……)
以前查找这种错误时比较盲目,就是在程序中缕着流程一步步的查找,逐个屏蔽进行排除,在程序隔一段加个while(1),以及通过串口发出错误状态日志等……这些方法都效率低下,不易查找。相比之下,查看堆栈的方法更加实用,效率也高。
在HardFault_Handler中的while(1)设置断点,然后运行,给它触发HardFault_Handler的条件,然后到断点处之后,查看watch窗口中的Call Stack+Local,也就是堆栈以及局部变量,程序执行到哪一句发生的错误,以及当时各个压栈的函数的各个局部变量的值一目了然,这里记录了死者临死前的底对自己做了什么傻事。
下面是刚成功解决死机问题的过程:
以前查找这种错误时比较盲目,就是在程序中缕着流程一步步的查找,逐个屏蔽进行排除,在程序隔一段加个while(1),以及通过串口发出错误状态日志等……这些方法都效率低下,不易查找。相比之下,查看堆栈的方法更加实用,效率也高。
在HardFault_Handler中的while(1)设置断点,然后运行,给它触发HardFault_Handler的条件,然后到断点处之后,查看watch窗口中的Call Stack+Local,也就是堆栈以及局部变量,程序执行到哪一句发生的错误,以及当时各个压栈的函数的各个局部变量的值一目了然,这里记录了死者临死前的底对自己做了什么傻事。
下面是刚成功解决死机问题的过程:
Call Stack+Local窗口内显示了发生错误之前的程序状态。
开始运行结果:
先定位到时USART3_IRQHandler函数data问题,然后发现里面是指针,不好定位,于是把指针赋值换成数组,原因立刻浮现了。
然后串口DEBUG结果:
找到原因了,完美解决死机问题。
0 0
- 亲自解决STM32 HardFault_Handler错误记录
- STM32 HardFault_Handler错误定位方法
- STM32发生HardFault_Handler错误的查找方法
- 关于STM32处理器的HardFault_Handler错误原因
- STM32硬件错误HardFault_Handler的处理方法
- 解决stm32进入HardFault_Handler的定位办法
- 解决stm32进入HardFault_Handler的定位办法
- STM32出现HardFault_Handler故障
- stm32调试,进入 HardFault_Handler
- STM32程序进入HardFault_Handler
- STM32 出现 hardfault_handler 处理方法
- STM32进入HardFault_Handler处理办法
- STM32进入HardFault_Handler处理办法
- 交叉编译tslib出现错误解决----亲自试验过
- STM32出现HardFault_Handler问题查找方法
- stm32 HardFault_Handler调试及问题查找方法
- 关于stm32 HardFault_Handler 异常的处理死机
- 如何检查STM32的HardFault_Handler故障
- This version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant R
- 插入排序
- 思考:如何让自己更有价值
- logstash-初涉
- 队列练习代码
- 亲自解决STM32 HardFault_Handler错误记录
- jvm内存模型
- ZooKeeper应用场景
- android studio xml 快捷键设置
- 【C/C++开发】TinyXml操作(含源码下载)
- 远程部署war包项目遇到的问题解决方案
- 笔记--
- Spring3.x事务失效的原因以及解决办法
- Android仿直播特效之刷礼物