stm32中出現(xiàn)的hard_fault問題 如何解決
然后看看如何解決的吧。
本文引用地址:http://m.butianyuan.cn/article/201611/316535.htm1、單步執(zhí)行,發(fā)現(xiàn)程序運(yùn)行到哪的時(shí)候出現(xiàn)了hardfault問題。發(fā)現(xiàn)是初始化的時(shí)候。應(yīng)該是結(jié)構(gòu)體指針的初始化問題。
2、其實(shí)也從晚上找了一些如何定位hardfault的問題點(diǎn)的方法。充分利用call stack以及但不調(diào)試的工具。
3、問題點(diǎn)通常發(fā)生在數(shù)據(jù)越界,指針未初始化,堆棧溢出的這些情況。
method-1 試過它的方法,查看寄存器,利用反匯編,定位出問題點(diǎn)。http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM
method-2 也試過這個(gè)方法,利用fault reports,以及call stack+local窗口,定位問題點(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); ---結(jié)構(gòu)體,成員是指針
····
}
更改為
static void __lora_init(void)
{
register_rf_func(&ctrlTypefunc); ---結(jié)構(gòu)體,成員是指針
lora_port_init(); ----GPIO的初始化
····
}
由于結(jié)構(gòu)體在lora_port_init();中使用到結(jié)構(gòu)體ctrlTypefunc,但是未初始化,所以出現(xiàn)這個(gè)問題。
評(píng)論