当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]HardFault_Handler问题查找方法

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

}

换一批

延伸阅读

[机器人] Handle推出新款带轮子的机器人 擅长推箱子

Handle推出新款带轮子的机器人 擅长推箱子

没有人不喜欢的机器人公司最近又有新动作了——在、和之后,这家公司推出了新款机器人——2017 年的 的“重新想象(Reimagined)”版本。这一次,它很擅长堆箱子。 最初版本的 Handle 机器人主要是将 Boston...

关键字: handler 机器人

[科技前线] 又快又便宜!以色列研发新冠病毒检测新方法:速度提高4至10倍

又快又便宜!以色列研发新冠病毒检测新方法:速度提高4至10倍

众所周知,检测阻止新冠病毒的重要措施之一,随着疫情在各国的蔓延,大家都在不断加强检测措施。目前广泛使用的新冠病毒检测法通过提取被检测者拭子样本中的核糖核酸(RNA)分子来检测是否含有新冠病毒RNA,而以色列近日发明了一种更快更廉价的检测手段...

关键字: 纳米 检测 方法 诊断 新冠病毒

[嵌入式职业规划] 摆脱职场“心理缺氧”的方法

没有氧气,人类将无法生存。如果心灵失去氧气,人又会变成什么样呢?小罗做主管多年,工作的周而复始让他觉得自己像一口快要干涸的枯井,时时担心会被他人取代。久而久之,他不仅懒得说话,面对工作也感到说不出的倦怠,甚至不愿和同事、朋友沟通,一遇到繁琐...

关键字: 方法 嵌入式职业规划 理缺氧

[嵌入式职业规划] 职场交际讲方法 应酬也是技术活

所谓的职场交际品位,实际上是指文明、文化、情感、理智、精神等因素在交际中的含量,含量越大,则品位越高。 音容举止:讲究文明礼貌 文质彬彬,然后君子。一个人只有从外表到本质都是文雅有礼,才能成为一个受人尊敬的文明的人。文明礼貌包括仪容整洁...

关键字: 方法 嵌入式职业规划

[嵌入式职业规划] 使人快乐的小方法

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

关键字: 方法 嵌入式职业规划 乐的小

嵌入式教程

6897 篇文章

关注

发布文章

技术子站

关闭