怎样调试STM32硬件错误HardFault_第1页
怎样调试STM32硬件错误HardFault_第2页
怎样调试STM32硬件错误HardFault_第3页
怎样调试STM32硬件错误HardFault_第4页
怎样调试STM32硬件错误HardFault_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页怎样调试STM32硬件错误HardFault在用(Keil)对(STM32)的程序进行(仿真)时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。

这说明STM32出现了(硬件)错误。

硬件错误中断

STM32出现硬件错误可能有以下原因:

数组越界操作;

内存溢出,访问越界;

堆栈溢出,程序跑飞;

中断处理错误;

遇到这种情况,可以通过以下2种方式来定位到出错代码段。

方法1:

在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击STOP停止仿真。

示例

在Keil菜单栏点击View——Registe(rs)Window,在(寄存器)查看窗口查找R14(LR)的值。

如果R14(LR)=0xFFFFFFE9,继续查看MSP(主堆栈指针)的值;如果R14(LR)=0xFFFFFFFD,继续查看PSP(进程栈指针)的值;

我的程序R14(LR)=0xFFFFFFF9,接下来以此为例。

寄存器信息

在Keil菜单栏点击“View”——“Mem(or)yWindows”——“Memory1”;

在“(Ad)dress”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。

地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。

内存信息

在Keil菜单栏点击View——Di(sas)semblyWindow,在Disassembly窗口中右击,在下拉菜单中选择ShowDisassemblyatAddress...。

在弹出框ShowCodeatAdress的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。

仔细查看附近区域的相关代码来排查错误具体原因。

方法2:

在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

CallSt(ac)k

在Keil菜单栏点击View——CallStackWindow弹出CallStack+Locals对话框。

然后在对话框中右键选择ShowCallerC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论