<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stm32中出現(xiàn)的hard_fault問題 如何解決

          stm32中出現(xiàn)的hard_fault問題 如何解決

          作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          最近移植別人的一個lora程序,公司前任同事已經(jīng)搞定的程序,從IAR平臺移植到KEIL中,移植后,居然出現(xiàn)了hardfault問題。一直以來,我很少遇到這個問題,遇到了,也算是好事。

          然后看看如何解決的吧。

          本文引用地址:http://www.ex-cimer.com/article/201611/316535.htm

          1、單步執(zhí)行,發(fā)現(xiàn)程序運(yùn)行到哪的時候出現(xiàn)了hardfault問題。發(fā)現(xiàn)是初始化的時候。應(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 也試過這個方法,利用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)這個問題。


          關(guān)鍵詞: stm32中hardfaul

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();