微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32中出现的hard_fault问题 如何解决

stm32中出现的hard_fault问题 如何解决

时间:11-13 来源:互联网 点击:
最近移植别人的一个lora程序,公司前任同事已经搞定的程序,从IAR平台移植到KEIL中,移植后,居然出现了hardfault问题。一直以来,我很少遇到这个问题,遇到了,也算是好事。

然后看看如何解决的吧。

1、单步执行,发现程序运行到哪的时候出现了hardfault问题。发现是初始化的时候。应该是结构体指针的初始化问题。

2、其实也从晚上找了一些如何定位hardfault的问题点的方法。充分利用call stack以及但不调试的工具。

3、问题点通常发生在数据越界,指针未初始化,堆栈溢出的这些情况。

method-1 试过它的方法,查看寄存器,利用反汇编,定位出问题点。http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM

method-2 也试过这个方法,利用fault reports,以及call stack+local窗口,定位问题点。http://blog.csdn.net/xiahouzuoxin/article/details/10068455

在这里,我推荐method-2。

static void __lora_init(void)

{

lora_port_init(); ----GPIO的初始化

register_rf_func(&ctrlTypefunc); ---结构体,成员是指针

····

}

更改为

static void __lora_init(void)

{

register_rf_func(&ctrlTypefunc); ---结构体,成员是指针

lora_port_init(); ----GPIO的初始化

····

}

由于结构体在lora_port_init();中使用到结构体ctrlTypefunc,但是未初始化,所以出现这个问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top