新闻中心

EEPW首页>嵌入式系统>设计应用> stm32中出现的hard_fault问题 如何解决

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

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

然后看看如何解决的吧。

本文引用地址://m.amcfsurvey.com/article/201611/316535.htm

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,但是未初始化,所以出现这个问题。


关键词:stm32中hardfaul

评论


技术专区

关闭