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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)程序問題總結(jié)

          單片機(jī)程序問題總結(jié)

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          BL51: WARNING 16 (UNCALLED SEGMENT, IGNORED FOR OVERLAY ...)
          原因是聲明的函數(shù)沒有調(diào)用。才產(chǎn)生這個(gè)警告。
          詳細(xì)說明見下面網(wǎng)址內(nèi)部。
          http://www.keil.com/support/docs/875.htm
          解決辦法:
          1將沒調(diào)用的函數(shù)部分注釋掉。等用到的時(shí)候在取消注釋。
          2調(diào)用一下,這個(gè)函數(shù)。(廢話)
          3使用條件編譯。
          #if 0
          void uncalled_function (void)
          { }
          #endif
          碰到的問題
          目標(biāo)器件:C8051F340
          編譯環(huán)境:Keil uV4.
          項(xiàng)目需要,定義了一個(gè)數(shù)組
          U8 xdata recv_para[PARA_LENGTH]={0}; //PARA_LENGTH=64
          該數(shù)組如果不加xdata修飾,會(huì)報(bào)錯(cuò),提示ram空間不夠。
          *** ERROR L107: ADDRESS SPACE OVERFLOW
          加上xdata修飾后,經(jīng)過測(cè)試發(fā)現(xiàn)程序不對(duì)。debug調(diào)試也不執(zhí)行。莫名其妙。
          然后將xdata修飾符改為idata后。程序可以正常運(yùn)行。但是這樣的話定義的數(shù)組還是會(huì)占用單片機(jī)內(nèi)部ram空間。內(nèi)部只有256字節(jié)ram
          如果后續(xù)還要添加功能,可能內(nèi)部ram還是不夠用。
          所以想利用單片機(jī)的外部ram。也就是datasheet里面說的XRAM來存放這個(gè)數(shù)組。datasheet里面說c8051f340這個(gè)單片機(jī)有個(gè)4k大小的XRAM可以用。
          經(jīng)過查網(wǎng)上資料發(fā)現(xiàn)用修飾符xdata,是沒有錯(cuò)誤的。
          網(wǎng)上有很多關(guān)于data,idata,xdata的用法文檔,這里就不引述了。
          最終發(fā)現(xiàn)有個(gè)網(wǎng)友碰到的問題和我一樣。
          鏈接:http://www.amobbs.com/thread-4453022-1-1.html
          鏈接:http://www.amobbs.com/thread-3950965-1-1.html
          根據(jù)網(wǎng)友的解釋:
          1.初始化時(shí)間太長(zhǎng) ,看門狗默認(rèn)開,沒關(guān)。
          2.根本原因是初始化的時(shí)間過長(zhǎng),超過了看門狗的時(shí)間,初始化完成以后才能進(jìn)入main函數(shù),這時(shí)關(guān)狗已經(jīng)來不及了,這時(shí)要修改startup.a51(記得把它加入復(fù)制到工程而不是修改系統(tǒng)的),在第一條指令前加入關(guān)狗的指令,在main函數(shù)里再開(如果需要的話)。
          所以,我在STARTUP.A51文件里面第131行添加了一條關(guān)閉看門狗的語句。
          MOV 0D9H,#00h ; 關(guān)開門狗
          關(guān)閉看門狗之后,再用xdata修飾符 修飾數(shù)組,然后初始化,就沒有問題了。
          還有一個(gè)解決方法就是定義的全局變量或者數(shù)組之類的。不要對(duì)其進(jìn)行初始化。等到main程序里面,通過主動(dòng)賦值的方式主動(dòng)初始化。


          關(guān)鍵詞: 單片機(jī)程序問

          評(píng)論


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