STM32 HardFault_Handler故障一例

    测试时不小点碰到STM32单片机电源,造成电源高频跳动,再启动后程序运行灯不亮,点击Stop按钮发现程序挂在 HardFault_Handler(void) 循环中。右键单击堆栈列表项,发现出错位置代码:return m_nVer == m_pData->nVer; 这一句是检测备份Flash数据的版本,我在系统中写了一段程序,用于断电时保存数据到Flash中,再加电时从Flash中恢复,由于电源高频跳动Flash出现了错误。打开Peripherals >Core Peripherals >FaultReports查看:

上图画圈表示总线故障,读内存错误,地址是0x081E1ABE,正是保存数据版本的位置,查看内存都是问号,分析问题原因可能是电源反复快速开关,破坏了Flash信息。

解决方法是:进入HardFault_Handler(void)后,判断如果是读Flash错误,不执行死循环而跳出。主程序中重新初始化Flash,问题解决。

幸好在测试时发现问题,如果在应用现场,后果不堪设想。谢谢老天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值