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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 程序移植中的常見問題總結(jié)

          程序移植中的常見問題總結(jié)

          作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          現(xiàn)象:

          芯片驅(qū)動(dòng)正常,功能應(yīng)用單獨(dú)實(shí)現(xiàn)也沒有任何問題。但是將其移植到主程序中出現(xiàn)了時(shí)鐘顯示停止、觸屏失效、參數(shù)顯示出現(xiàn)問題的現(xiàn)象。

          原因:
          在芯片驅(qū)動(dòng)程序的開發(fā)中,忽略了一個(gè)問題。那就是該芯片引腳占用的IO資源在初始化的時(shí)候不應(yīng)該改變其他引腳的正常功能工作。初始化芯片時(shí)人為的改變了其余功能引腳的作用。將其功能復(fù)用功能人為了改成了輸出引腳。只關(guān)注了該芯片正常工作時(shí)的IO引腳,忽略了其余各IO口的復(fù)用狀態(tài)。后逐條分析查看原主程序中 IO的初始化操作,逐口比對發(fā)現(xiàn)了該問題。

          解決方案:
          重新對接口進(jìn)行初始化,保留其余引腳的功能復(fù)用作用。

          總結(jié):
          工作要細(xì)致,不要犯想當(dāng)然的毛病。出現(xiàn)問題后要冷靜,咬人是不對的,呵呵。。。

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

          一、關(guān)于延時(shí)

          芯片時(shí)序要求非常嚴(yán)格,最基本的時(shí)間單位一定要非常精確,精確到微秒級。這是進(jìn)行后續(xù)工作的基礎(chǔ)。因?yàn)镃語言來編程,不是很好控制延時(shí)的長短。故采用測試的方法進(jìn)行,為了最大可能的減小誤差,采用延長測試時(shí)間的方式進(jìn)行。其基本思想是延時(shí)一定時(shí)間后,將其時(shí)間在屏幕上打印出來,并分析各兩次時(shí)間的間隔和具體延時(shí)參數(shù)之間的關(guān)系。例如:當(dāng)延時(shí)參數(shù)為60000000時(shí),各兩次時(shí)間間隔是否小于1分鐘。【備注:60000000us=1min】

          二、對芯片的讀寫操作驗(yàn)證

          進(jìn)行芯片自我驗(yàn)證,向芯片暫存器的固定字節(jié)寫入數(shù)據(jù),然后一個(gè)字節(jié)一個(gè)字節(jié)讀出來,比對寫入和讀出的數(shù)據(jù)是否一樣。

          三、非易失操作的必要性

          RAM數(shù)據(jù)暫存器用于內(nèi)部計(jì)算和數(shù)據(jù)的存取,數(shù)據(jù)在掉電后丟失。為長期保存需要保存的數(shù)據(jù)信息,需要將相關(guān)數(shù)據(jù)信息由暫存器拷貝到EEPROM中。
          上電復(fù)位后,芯片自動(dòng)將EEPROM中相關(guān)字節(jié)拷貝到RAM中。

          四、非必需操作的必要性

          芯片讀取操作,首先讀取數(shù)據(jù)的低8位,再讀取數(shù)據(jù)的高8位。無論是低8位還是高8位,都是從最低位一位一位的讀。即使低位是不需要的字節(jié)也要讀出來,這叫規(guī)則。



          關(guān)鍵詞: 程序移植芯片驅(qū)

          評論


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