STM32|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,问题解决。
【STM32|STM32 HardFault_Handler故障一例】幸好在测试时发现问题,如果在应用现场,后果不堪设想。谢谢老天!
推荐阅读
- 基于stm32智能风扇|基于stm32智能风扇_一款基于STM32的智能灭火机器人设计
- stm32|基于STM32和freeRTOS智能门锁设计方案
- STM32F4|STM32F4 TIM6 TIM7 基本定时器
- Fourth|Fourth season fifth episode,Chandler likes Joey‘s new girlfriend???
- Python爬虫笔记|Python爬虫学习笔记_DAY_18_Python爬虫之handler处理器的使用【Python爬虫】
- LUA|单片机脚本语言移植lua到stm32MDK
- GO|GO http server (II) Server.Handler
- Netty核心概念之ChannelHandler&Pipeline&ChannelHandlerContext
- STM32 CUbeIDE 定时器中断使用
- STM32F1系列ADC电压采集