久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

MSP430中定義大數組存在的問題及解決方案

作者:學會珍惜LW   來源:學會珍惜LW的空間   點擊數:  更新時間:2014年07月30日   【字體:

      這兩天利用MSP430做一個小系統,需要定義一個很大的全局數組,編譯之后沒有問題,但是調試的時候卻遇到了問題。下面我們先來看下遇到的問題。

問題:
        利用CCS軟件將代碼燒入430之后,在還沒有點擊開始運行時,程序就已經開始自動運行了如下圖所示,在點擊暫停之后,程序就報錯了。在把那個數組元素個數改的很小之后,程序就正常了。所以可以斷定,是由于定義大數組產生的問題。

問題分析:
       通過查找資料,發現產生這個問題的原因是因為全局數組定義過大時,系統一上電,需要對這些數組初始化,初始化的時間過長,導致看門口溢出,從而一直進不了主函數,導致程序跑飛了。
解決方案:
(1)編寫C啟動函數
       在TI官網找了有關CCS的資料之后,找到了解決方案。
       除了主函數之外,我們需要再定義一個函數,函數名為的_system_pre_init(),在CCS編譯器中,這是一個C啟動函數,是在主函數開始執行之前執行的,所以在該函數里,加入關閉看門口的代碼就可以解決這個問題了~
       在IAR編譯器中,也有類似的函數,為__low_level_init(),使用方法與上文提到的相同。
(2)將大數組放在RAM的不初始化區域
       既然已經知道是初始化時間過長導致這個問題,我們可以把大數組定義在RAM的不初始化區域就行了。
       在IAR編譯器中,在定義變量之前,加上__no_initm命令即可,如__no_init char a; 即把a這個字符型變量放在RAM的不初始化區域。
       在CCS編譯器中,沒有這樣的命令,需要做類似的操作的話,有些繁瑣,需要自己改寫CMD文件,這里就不再贅述了。大家有興趣的話,可以到TI官網下載相應的文檔看一下。
關閉窗口

相關文章

主站蜘蛛池模板: 成人高清在线 | 成人激情免费视频 | 黄色一级电影免费观看 | 在线观看免费av网站 | 天天天操操操 | 91成人小视频 | 一级片网站视频 | 精品一区二区三区四区视频 | 狠狠色香婷婷久久亚洲精品 | 欧美日韩精品中文字幕 | 91私密视频 | av在线免费网 | 黄色大片在线免费观看 | 在线观看日韩av | 九九亚洲| 成人性生交大片免费看中文带字幕 | 日韩国产中文字幕 | 国产精品一区久久久 | 黄视频国产 | 国产精品成人在线 | 亚洲精品福利视频 | 日韩精品视频在线观看一区二区三区 | 欧美成人精品一区二区三区 | 韩日一区 | 狠狠天天 | 国产精品久久久久久婷婷天堂 | 色影视| 国产丝袜一区二区三区免费视频 | 国产精品一区二区久久久久 | 国产黄色在线观看 | 中文字幕在线电影观看 | 精品久久久久久亚洲综合网 | 中国人pornoxxx麻豆 | 天天操狠狠操 | 国精久久 | www日韩高清 | 国产亚洲一区二区三区在线观看 | 国产福利在线播放麻豆 | 精品国产免费一区二区三区演员表 | 产真a观专区 | 国产美女一区二区三区 |