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

 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();

}

换一批

延伸阅读

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

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

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

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

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

使人快乐的小方法

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

关键字:方法

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

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

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

关键字:保持 方法

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

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

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

关键字:方法 测试 创意

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

都市白领6种方法爱自己

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

关键字:方法

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

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

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

关键字:方法

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

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

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

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

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

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

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

关键字:Android App 方法

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

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

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

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

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15