首页 > 嵌入式基础教程 > 设计教程

 STM32出现HardFault_Handler故障的原因主要有两个方面:

1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。

2、堆栈溢出。增加堆栈的大小。

出现问题时排查的方法:

发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、Return address、PSR、LR寄存器依次入栈,其中Return address即为发生异常前PC将要执行的下一条指令地址。

注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威)

编写问题代码如下:

void StackFlow(void)

{

int a[3],i;

for(i=0; i<10000; i++)

{

a[i]=1;

}

}

void SystemInit(void)

{

/* Reset the RCC clock configuration to the default reset state ------------*/

/* Set HSION bit */

RCC->CR |= (uint32_t)0x00000001;

/* Reset CFGR register */

RCC->CFGR = 0x00000000;

/* Reset HSEON, CSSON and PLLON bits */

RCC->CR &= (uint32_t)0xFEF6FFFF;

/* Reset PLLCFGR register */

RCC->PLLCFGR = 0x24003010;

StackFlow();

/* Reset HSEBYP bit */

RCC->CR &= (uint32_t)0xFFFBFFFF;

。。。。。。。。。。。。。。

}

DEBUG如下图

SP值为0x20008560,查看堆栈里面的值依次为R0~R3、R12、Return address、PSR、LR, 例如R0(10 27 00 00), 显然堆栈后第21个字节到24字节即为Return address,该地址0x08001FFD即为异常前PC将要执行的下一条指令地址(即StackFlow()后面的语句处 RCC->CR &= (uint32_t)0xFFFBFFFF)

另一种方法:

默认的HardFault_Handler处理方法不是B .这样的死循环么?楼主将它改成BX LR直接返回的形式。然后在这条语句打个断点,一旦在断点中停下来,说明出错了,然后再返回,就可以返回到出错的位置的下一条语句那儿

__asm void wait()

{

BX lr

}

void HardFault_Handler(void)

{

/* Go to infinite loop when Hard Fault exception occurs */

wait();

}

换一批

延伸阅读

[新鲜事] 碎片化Android平台:App开发和管理的5个方法

碎片化Android平台:App开发和管理的5个方法

碎片化的Android平台让应用开发和管理相当困难,但是最近的云服务为测试提供了快速可见的新方法,让开发者们更方便地管理各个设备上的应用。在最近波特兰的PIE演示日中, AppThwack 的Trent Peterson表示,通过基于云......

关键字:Android App 方法

[猎聘集] 使人快乐的小方法

使人快乐的小方法

精神胜利法。这是一种有益身心健康的心理防卫机制。在你的事业、爱情、婚姻不尽如人意时,在你因经济上得不到合理对待而伤感时,在你无端遭到人身攻击或不公正的评价而气恼时,在你因生理缺陷遭到嘲笑而郁郁寡欢时,......

关键字:方法

[新鲜事] 美国外科医生发现永久改变人眼颜色方法

美国外科医生发现永久改变人眼颜色方法

现在一位外科医生已经设计出利用人工虹膜植入改变人眼颜色的永久性方法肯尼思-罗森塔尔博士是这项手术的先驱,人工虹膜植入每只眼睛需要花费大约15分钟,并需要在局部麻醉下进行据国外媒体报道,彩色隐形眼镜非常流行......

关键字:人眼 颜色 方法 改变 永久 外科 医生 发现 美国

[猎聘集] 高效职场:事半功倍的7个方法

高效职场:事半功倍的7个方法

导语:为什么你花费更多的时间,却得不到预期的效果?这里有高效职场的7个方法,招招让你事半功倍。 工作中,很多人往往苦于耗时长,成效少。下面的这七条精益法则不仅仅可以用于市场营销活动,也可以用于其他的工作......

关键字:方法

[新鲜事] 谁曾想“查找我的iPhone” 竟会惹来杀身之祸

谁曾想“查找我的iPhone” 竟会惹来杀身之祸

苹果的“查找我的iPhone”功能确实很好用,不少果粉都曾经通过这个功能找回过自己的手机。不过,事物往往都有两面性,有神自然就会有魔,有光明自然也会有黑暗,很不幸,一些人就很邪恶的盯上了“查找我的iPhone "这个功能。......

关键字:苹果手机 “查找我的iPhone” iPhone

[猎聘集] 两种方法 测试你的创意是否靠谱

两种方法 测试你的创意是否靠谱

如果你每天都为蓬勃而出的无数创意兴奋不已,同时也在为创意是否靠谱,是否能满足普遍用户的需求而苦恼,这里有两种方法助你渡过创业黑暗期。 全世界的创业者们每天都诞生出无数前所未有的创意,每天都有巨量的、地......

关键字:方法 测试 创意

[猎聘集] 都市白领6种方法爱自己

都市白领6种方法爱自己

人人都有疲惫的时候,此时要给自己一点时间,给自己的心灵做个按摩,好好爱自己。1.换个新造型。去理发店,烫个卷发,或将长发剪短,看着镜子中陌生又漂亮的自己会心一笑;或去商场,挑选未曾尝试过的眼影或口红,尝......

关键字:方法

[猎聘集] 几种简单保持积极心理的方法

几种简单保持积极心理的方法

书上有很多保持积极心理的方法,这里介绍几个本人亲自尝试过的简单方法,只要你去做就会有惊人的效果:1.每天写下好的3件事情。这3件事情不论大小,只要是你觉得好的进展就好,例如可以是看到某人的微笑,又或者是工......

关键字:保持 方法

[真心话] 干货!地震来临我们应该怎样正确使用手机

干货!地震来临我们应该怎样正确使用手机

8月8日晚,四川九寨沟发生了7.0级地震,9日凌晨新疆精河也发生了6.1级地震。天灾无情,在我们遇到地震的时候,手机应该怎么使用才能物尽其用呢?......

关键字:地震 手机 使用方法
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi&#174;和蓝牙&#174;combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14