打印
[应用相关]

STM32跳至硬件错误中断(HardFault_Handle) 原因及参考

[复制链接]
2824|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、HardFault_Handle引起的原因:
1、遇到错误问题是数据类型不对,导致该步骤永远不能执行到,跳至硬件错误中断;所以硬件中断可尝试查找数据类型错误。

2、堆栈设置错误也会跳至hardwarefault;

3、如果上电后, 在调试时, 执行单步, 会在不确定位置的地方产生HardFault_Handle, 检查一下你的时钟配置(外部晶振频率, SysTemInit/PLLConfig相关函数以及晶振频率宏定义), 可能是超频了...导致了STM32不稳定.

4、如果在使用某些参数时,使用的类型与其定义的类型不同,也可能导致出现跳转hardfault,这种情况下, 一般是不固定的跳转hardfalt,排查问题较麻烦;

5、如果你使用片上flash做参数存储,那么你需要注意了,参数存储区最好从flash的后部往前存,避免参数区与代码区的互相覆盖。如果参数被覆盖了,或者代码被覆盖了,这也会导致跳转hardfault。

使用特权

评论回复
沙发
花间一壶酒sd|  楼主 | 2022-7-26 14:22 | 只看该作者
二、解决方法

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

使用特权

评论回复
板凳
花间一壶酒sd|  楼主 | 2022-7-26 14:24 | 只看该作者
1.2 在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。

使用特权

评论回复
地板
花间一壶酒sd|  楼主 | 2022-7-26 14:25 | 只看该作者
1.3 在Keil菜单栏点“View”——“MemoryWindows”——“Memory1”,在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。

使用特权

评论回复
5
花间一壶酒sd|  楼主 | 2022-7-26 14:26 | 只看该作者

使用特权

评论回复
6
花间一壶酒sd|  楼主 | 2022-7-26 14:31 | 只看该作者
1.4 在Keil菜单栏点击“View”——“Disassembly Window”,在“Disassembly”窗口中右击,在下拉菜单中选择“Show Disassemblyat Address...”。在弹出框“Show Code atAdress”的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。

使用特权

评论回复
7
花间一壶酒sd|  楼主 | 2022-7-26 14:38 | 只看该作者

使用特权

评论回复
8
vivilyly| | 2023-2-2 13:28 | 只看该作者
出异常一般都是HardFault_Handler.  

使用特权

评论回复
9
lihuami| | 2023-2-4 15:31 | 只看该作者
常规的指针错误吧               

使用特权

评论回复
10
eefas| | 2023-2-6 13:10 | 只看该作者
stm32f10x_it.c里面有个HardFault_Handler函数,把while(1)去掉就可以了

使用特权

评论回复
11
hearstnorman323| | 2023-2-7 20:12 | 只看该作者
遇到这种情况一般无非以下两种原因:第一、内存溢出或者访问越界

使用特权

评论回复
12
iyoum| | 2023-2-8 19:17 | 只看该作者
先看看是不是你任务栈空间设置太小,溢出了?

使用特权

评论回复
13
uiint| | 2023-2-10 11:35 | 只看该作者
有可能内存溢出或者访问越界。              

使用特权

评论回复
14
primojones| | 2023-2-14 12:06 | 只看该作者
果上电后, 在调试时, 执行单步, 会在不确定位置的地方产生HardFault_Handle

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

1138

帖子

2

粉丝