




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页怎样调试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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业设计与制造技术的创新融合
- 工作中的心理疲劳与对策研究
- 工作中的数据分析软件使用指南
- 工业设计的美学与实 用性探讨
- 工作中的法律风险防范与应对
- 工作流程标准化与管理提升
- 工作与生活平衡的企业政策实践
- 工程塑料模架设计与优化
- 工作汇报的逻辑框架
- 工程测量中智能算法的应用研究
- FFU龙骨吊顶防坠研究及应用-2023.12.11王国栋修
- 多层钢结构厂房施工方案
- 知道网课智慧《艺术与科学理论基础》测试答案
- 清拆劳务合同范本
- DL-T5366-2014发电厂汽水管道应力计算技术规程
- (高清版)JTST 273-2024 水运工程测量定额
- 《纸牌国》阅读指导
- 公路工程设计设计的质量保证措施、进度保证措施
- 【同步训练】《血液循环-体循环和肺循环》(解析版)
- 智能护理数字化驱动医护智能管理
- 小学数学《比例》大单元教学设计
评论
0/150
提交评论