新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > msp430程序跑飛原因和解決方式積累

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

        作者: 時間:2016-11-25 來源:網絡 收藏
        1.中斷或主函數中有死循環,現象是程序停在某處。

        2.堆棧溢出。現象是程序跑飛
        **************************************************************************************************

        本文引用地址:http://www.104case.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;)內沒有處理的程序。

        ……
        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、數組越界。定義的數組只有50個單元,但是程序運行的過程中,卻給他賦給50+個單元。

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

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

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

        6、把無用的中斷允許關掉。



        關鍵詞: msp430程序跑

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 临邑县| 淳化县| 临泉县| 辽宁省| 淄博市| 商水县| 香港| 九龙县| 孝义市| 双峰县| 定襄县| 周宁县| 阳东县| 北流市| 元朗区| 图木舒克市| 奉贤区| 资兴市| 历史| 盐城市| 读书| 巴林右旗| 巢湖市| 台东市| 措勤县| 沙坪坝区| 志丹县| 绵竹市| 淮安市| 吉隆县| 富锦市| 东乡| 惠安县| 鲁甸县| 浑源县| 长海县| 泰顺县| 防城港市| 大荔县| 民勤县| 大埔区|