历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2021年11月25日 | STM32 HardFault_Handler 硬件错误 解决办法

2021-11-25 来源:eefocus

在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。
在这里插入图片描述
STM32出现硬件错误可能有以下原因:

(1)数组越界操作;

(2)内存溢出,访问越界;

(3)堆栈溢出,程序跑飞;

(4)中断处理错误;

遇到这种情况,可以通过以下2种方式来定位到出错代码段。


方法1:

1.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。
在这里插入图片描述
1.2 在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。
在这里插入图片描述

1.3 在Keil菜单栏点击“View”——“Memory Windows”——“Memory1”,在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。
在这里插入图片描述

1.4 在Keil菜单栏点击“View”——“Disassembly Window”,在“Disassembly”窗口中右击,在下拉菜单中选择“Show Disassemblyat Address…”。在弹出框“Show Code atAdress”的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。
在这里插入图片描述

方法2:

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

2.2 在Keil菜单栏点击“View”——“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况。

推荐阅读

史海拾趣

EECO Switch公司的发展小趣事

EECO Switch公司成立于1947年,最初作为加利福尼亚州的一家电子工程公司,致力于电子产品的设计与制造。随着技术的不断进步和市场需求的变化,公司逐渐将业务重心转向人机界面产品的设计与开发。在这个过程中,EECO Switch凭借其深厚的技术积累和创新精神,成功开发出了一系列具有领先技术的人机界面产品,从而确立了其在该领域的领先地位。

ADMOS公司的发展小趣事

随着技术的不断进步,ADMOS公司开始积极拓展国内外市场。通过与各大电子设备制造商建立紧密的合作关系,ADMOS的产品逐渐渗透到智能手机、平板电脑、笔记本电脑等消费电子产品中。同时,公司还积极开拓汽车电子、工业控制等新兴市场,为公司的持续成长注入了新的动力。

Acopian Power Supplies公司的发展小趣事

为了进一步提升公司的竞争力和影响力,ADMOS公司积极寻求与其他行业领导者的战略合作。通过与芯片设计、封装测试等领域的顶尖企业建立战略合作关系,ADMOS得以共享资源、互通有无,共同推动电子行业的进步和发展。这种合作模式不仅加速了ADMOS公司的成长步伐,也为整个电子行业的繁荣做出了贡献。

请注意,以上故事均为虚构,旨在展示一个可能的ADMOS公司发展历程。实际情况可能有所不同,具体细节需参考ADMOS公司的官方资料和相关报道。

Global Communications公司的发展小趣事
通过温度传感器检测环境温度,并将检测到的温度信号转换为电信号后,送入到专门的补偿电路中。补偿电路根据温度信号调整晶体振荡器的输出频率或相位,以达到补偿的目的。这种方法相对复杂,但可以实现更精确的补偿效果。
Cyrustek公司的发展小趣事

随着全球化的不断推进,Cyrustek公司也积极实施全球化战略。通过与国际知名企业的合作和技术交流,Cyrustek不断引进先进的技术和管理经验,提升自身的核心竞争力。同时,Cyrustek还积极开拓国际市场,将产品销往全球各地。这种全球化战略不仅帮助Cyrustek扩大了市场份额,也提高了其品牌知名度和影响力。

意瑞(COSEMITECH)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,意瑞半导体的市场影响力逐渐扩大。其高集成度、高性能的芯片广泛应用于国内外主流OEM及全球知名Tier1厂商。在汽车电子领域,公司布局了动力总成、车身控制、电源管理和底盘安全等模块,其产品在多家主机厂成功导入并量产,性能超过了国外老牌芯片,成为该品类中本土鲜有的实现汽车市场大批量出货的产品。

问答坊 | AI 解惑

求助 关于反应速度测试仪的设计 (MCS-51单片机)

希望高手们帮帮忙先谢谢了!要求如下: 1  能够完成一个人反应速度的测试工作,并将结果显示在LED数字显示屏上。 2  程序开始时亮黄灯进入准备状态,被测试者按一次按钮则黄灯灭,开始进行测试。 3  每一个测试完成 ...…

查看全部问答>

发现同一个贴子里多个附件下载的问题

最近在论坛里发现很多帖子的资源包含多个附件,而这些附件都是一个文件分成多个的,下载时会连续扣调芯币,这样的话论坛中大部分人几乎无法负担。 这种情况,建议论坛能不能改一下,在一个帖子里的附件下载只扣一次芯币,其他附件就不用扣了。…

查看全部问答>

大赛B题 声源自制

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 我原来写过几个简单的小程序 有双音多频 单音多频的 大家可以下载看看 这几个程序使用的是PIC16F54 都是可以直接使用的 大家只要将HEX文件烧录就可以用了  …

查看全部问答>

关于步进电机控制

各位高手:这是两相电机,怎么接线呢?   我接的线不知道是不是不对,还是程序有问题,在软件防真时可以,但是下载到板上时电机就老是抖动,没按照我设计的转一圈转。   我是:2跟5并接12V,然后P0.0接3  P0.1接1  P0.2接4 ...…

查看全部问答>

ISE文件类型说明

在使用ISE进行设计的过程中,会在你的工程目录中生成好多类型的文件,这些文件是什么文件呢?通过自己和网上朋友的经验对ISE的文件类型做一下小小总结: ISE文件类型说明 *.bit  下载配置文件。*.bld  报告文件。*.edn  网表文 ...…

查看全部问答>

请问哪里有无线协议的详细文档下载?

刚学GPRS开发,想找些无线通讯协议看看,google了一下,没找到,所以想请教一下,哪里有这一类的完整文档下载,谢谢!…

查看全部问答>

电感

电感电感在电路中常用“L”加数字表示,如:L6表示编号为6的电感。电感线圈是将绝缘的导线在绝缘的骨架上绕一定的圈数制成。直流可通过线圈,直流电阻就是导线本身的电阻,压降很小;当交流信号通过线圈时,线圈两端将会产生自感电动势,自感电动势 ...…

查看全部问答>

5天学会Protel99SE图文教程下载

虽然这个是老古董了,因为看到,还有朋友再使用和学习protel 99,这份资料不错,相信能给初学者带来帮助。 …

查看全部问答>

《单片机与计算机串口通信实践》

串口通信的第一种实现方案:半双工通信方式;这适用于:下位机需要等待上位机的回复之后,方可继续发送下一个数据包的应用场合。在大多数的串口书籍中,串口通信的具体实现均是采用的该方案;但功能太简化、代码不细致。在本书中,全面考虑了菜单 ...…

查看全部问答>

关于nokia5110显示屏的参数设定

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 刚刚做了下实验,看看调整供电电压对nokia5110液晶显示屏的影响 这个显示屏由于比较便宜,又是点阵的,所以用的比较多,我虽然老早就用了,但是一直有点疑问放在心上,就是其参数设定问题 1 ...…

查看全部问答>