stm32中出現的hard_fault問(wèn)題 如何解決
然后看看如何解決的吧。
本文引用地址:http://dyxdggzs.com/article/201611/316535.htm1、單步執行,發(fā)現程序運行到哪的時(shí)候出現了hardfault問(wèn)題。發(fā)現是初始化的時(shí)候。應該是結構體指針的初始化問(wèn)題。
2、其實(shí)也從晚上找了一些如何定位hardfault的問(wèn)題點(diǎn)的方法。充分利用call stack以及但不調試的工具。
3、問(wèn)題點(diǎn)通常發(fā)生在數據越界,指針未初始化,堆棧溢出的這些情況。
method-1 試過(guò)它的方法,查看寄存器,利用反匯編,定位出問(wèn)題點(diǎn)。http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM
method-2 也試過(guò)這個(gè)方法,利用fault reports,以及call stack+local窗口,定位問(wèn)題點(diǎn)。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,但是未初始化,所以出現這個(gè)問(wèn)題。
評論