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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式觸摸屏驅(qū)動程序的研究與開

          基于嵌入式觸摸屏驅(qū)動程序的研究與開

          作者: 時間:2012-03-21 來源:網(wǎng)絡(luò) 收藏

          3 WinCE下驅(qū)動程序模型

          要編寫驅(qū)動程序還要確定它是屬于哪種驅(qū)動。Windows CE驅(qū)動程序分本機(jī)設(shè)備驅(qū)動和流設(shè)備驅(qū)動。本機(jī)設(shè)備驅(qū)動程序是被靜態(tài)地鏈接到GWES,它們不作為一個單獨(dú)的DLL存在。有一些類型的設(shè)備,如鍵盤、顯示器和PC卡插槽等對操作系統(tǒng)都有一定的接口,是專門用于Windows CE.NET的,所以它們都屬本機(jī)設(shè)備驅(qū)動。若是按照結(jié)構(gòu)分,又可分為分層的驅(qū)動程序和不分層的驅(qū)動程序。分層的驅(qū)動程序由兩個設(shè)置好的層組成:上層是模型設(shè)備驅(qū)動程序(MDD),下層是依賴平臺的驅(qū)動程序(PDD)。流接口驅(qū)動程序是以動態(tài)鏈接庫形式存在的,由設(shè)備管理器統(tǒng)一加載、管理和卸載。其驅(qū)動模型見圖3。本文采用分層的驅(qū)動程序來完成基于驅(qū)動[2-3]。


          圖3 WinCE下驅(qū)動程序模型

          4 Windows CE下驅(qū)動程序的實(shí)現(xiàn)

          4.1 配置硬件

          對于分層的驅(qū)動程序只需要編寫對應(yīng)于特定硬件平臺的PDD層代碼。首先是配置控制器硬件,這是完成驅(qū)動程序的第一件事,即對進(jìn)行硬件初始化。也就是通過向映射到存儲器的寄存器中寫入數(shù)據(jù)將觸摸屏控制器設(shè)置成某個確定的狀態(tài)。配置硬件之前,我們需要事先決定是否采用中斷驅(qū)動,這里我們采用中斷驅(qū)動方式。要說明的是,并不是采用中斷永遠(yuǎn)是最好的設(shè)計方式。配置硬件這一過程是由TouchPanalPowerOn()函數(shù)完成的。下面是部分實(shí)現(xiàn)代碼:

          TouchPanelPowerOn()

          {

          ......

          // Setup GPIOs for touch為觸摸屏設(shè)置輸入/輸出口

          v_pIOPregs->rGPGCON = ~((0x03 30)|(0x03 28)|(0x03 26)|(0x03 24));

          // Set GPG15 to use as nYPON, GPG14 to use as YMON, GPG13 to use as nXPON, GPG12 to use as XMON 配置PORT G的管腳

          ......

          // Setup ADC register

          // Down Int, YMON:0, nYPON:1, XMON:0;nXPON:1, Pullup:1, Auto Conv.,Waiting.

          v_pADCregs->rADCTSC = (08)|(17)|(16)|(05)|(14)|(03)|(02)|(3);

          ......

          }



          評論


          相關(guān)推薦

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