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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > msp430程序跑飛原因和解決方式積累

          msp430程序跑飛原因和解決方式積累

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          1.中斷或主函數(shù)中有死循環(huán),現(xiàn)象是程序停在某處。

          2.堆棧溢出?,F(xiàn)象是程序跑飛。
          **************************************************************************************************

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

          3、是否開了中斷但是沒有用。如:

          開了中斷:

          TA0CCTL0 = CCIE; // CCR0 interrupt enabled
          TA0CCTL1 = CCIE; // CCR1 interrupt enabled//時間周期1使能
          TA0CCTL2 = CCIE; // CCR2 interrupt enabled//時間周期2使能
          TA0CCTL3= CCIE; // CCR3 interrupt enabled//時間周期3使能

          但是:

          定時器中:

          case 4: TA0CCTL2 = CCIE;)和 case 6: TA0CCTL3= CCIE;)內(nèi)沒有處理的程序。

          ……
          case 2:
          TA0CCR1 +=1024; // Add Offset to CCR2
          SecondReach=1;
          CountToMunite++;
          Rquestinterval++;
          SecondTimecount++;
          break; // CCR4 not used
          case 4:
          break;
          case 6:
          break;
          case 8:
          break; // CCR3 not used
          ……

          4、數(shù)組越界。定義的數(shù)組只有50個單元,但是程序運行的過程中,卻給他賦給50+個單元。

          解決辦法:
          A.看中斷有沒有用 _EINT(),引起中斷嵌套.
          B.Project--Options--General Options---Stack/Heap 將Stack size設(shè)置大一些。 (堆棧溢出)
          3.中斷耗時太長,剛出中斷又進(jìn)去了.這時的現(xiàn)象是程序一直在中斷中執(zhí)行,回不到主函數(shù)。 (中斷嵌套)
          4.檢查CPU的電源是不是穩(wěn)定,msp430在要保證程序正常運行,需保證Vcc大于1.8V。當(dāng)電壓低至0.8V時,程序仍有可能執(zhí)行。這時的現(xiàn)象是PC指針亂飛,有復(fù)位,死機(jī),停在中斷,時鐘頻率發(fā)生變化等現(xiàn)象。
          5.程序編譯沒問題,下載程序后上電不斷復(fù)位,該問題是由于WDT造成的(RAM的初始化時間大于WDT默認(rèn)的32MS時間,因此MSP復(fù)位)根本原因是初始化的時間過長,超過了看門狗的時間,初始化完成以后才能進(jìn)入main函數(shù),這時關(guān)狗已經(jīng)來不及了。
          解決的辦法:
          A 對你的數(shù)組用 __no init_定義,上電編譯器不產(chǎn)生特殊的附加函數(shù)去初始化RAM.
          B 在Project--Options--Linker--Config中選擇 Override default programe,并將Entry lib 設(shè)置成 __program_start這時要修改Cstartup.S43(記得把它加入復(fù)制到工程而不是修改系統(tǒng)的),在第一條指令前加入關(guān)狗的指令,在main函數(shù)里再開(如果需要的話)。
          如果用匯編,則沒有這個問題

          http://topic.csdn.net/u/20100730/09/45f212a1-0354-4b73-ad62-335b5955c0f2.html

          **************************************************************************************************

          6、把無用的中斷允許關(guān)掉。



          關(guān)鍵詞: msp430程序跑

          評論


          技術(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); })();