硬件中断的解决方法(不确定是否正确)

本文详细介绍了在嵌入式系统中如何处理硬件中断异常,通过检查HardFault_Handler、FaultReports、HFSR、BFSR、UFSR等寄存器,定位到存储器管理fault的取值访问违例问题。并提到使用逐行注释代码的方法来确定问题代码的位置。

参考链接:https://www.pianshen.com/article/3253360786/

第一部分:定位问题

1.当出现硬件中断时,首先在硬件中断函数HardFault_Handler(void)打断点,保存现场环境;
2.打开Peripherals -> Core Peripherals -> Fault Reports按钮,可以查看到Hard Faults中的FORCED被勾选,说明是其他异常上访导致的硬件中断,同时观察HFSR(内存地址是0xE000ED2C)寄存区发现第30位置1,查看芯片手册发现是总线fault、存储器管理fault或是用法fault上访导致的硬件中断;
在这里插入图片描述
3.找到总线fault状态寄存器BFSR(地址0xE000ED29);用法fault状态寄存器UFSR(地址0xE000ED2A),存储器管理fault状态存储器(地址0xE000ED28),发现存储器管理fault状态寄存器为01,查表可发现是取值访问违例。成功定位错误。
三个状态寄存器值

第二部分:定位问题产生的位置

1.定位错误产生的位置:目前方法是先注释一大行,发现没有问题再逐步注释,直到注释到问题代码。
通过寄存器来定位产生问题的位置改天再仔细看下,后续再更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值