1. 概述
在单片机调试过程中最让开发者感到头疼的就是遇上Hardfault错误问题了,如何快速的触发问题的原因是解决问题的关键。可是类问题对于比较初级的开发者来说往往没有掌握有效的方法找到是那行代码触发了Hardfault。网上的博客有一些方法解决这类问题,当时讲的又不是很系统,这篇的目的就是系统的讲解一下Hardfault错误的具体定位方法。这篇文章的方法是建立在可以用Keil + Jlink实现在线调试的环境下,请读者注意这个前提条件,其他条件下的定位方法我会在以后的章节中给出。
2.找到哪一行触发Hardfault的方法
- 方法一:
其实,在Keil在线调试的条件下找到哪一行触发了Hardfault的最简单的方法是使用Call Stack Window(栈调用窗口)。当我们运行程序并进入hardfault后,我们暂停程序后Call Stack 窗口就会显示函数的调用过程,我们选择HardFault_Handler右键选择Show Caller Code选项既可以找到那行触发的hardfault了。具体操作如下: