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

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > ARM嵌入式系統(tǒng)中觸摸屏的中斷控制方法

          ARM嵌入式系統(tǒng)中觸摸屏的中斷控制方法

          作者: 時(shí)間:2010-06-25 來源:網(wǎng)絡(luò) 收藏

          首先必須弄清楚SUBSRCPND與SRCPND之間的關(guān)系,幾個(gè)SUBSRCPND可能對(duì)應(yīng)同一個(gè)SRCPND。經(jīng)過不斷總結(jié),得出的對(duì)應(yīng)關(guān)系如表1所列。從表中可知,要用到SUBSRCPND中的INT_TC位,即SUBSRCPND[9]。這里定義變量:
          #define BIT_SUB_TC(0x19)
          與之對(duì)應(yīng)的是SRCPND中的INT_ADC位,即SRCPND[31],又定義變量:
          #define BIT_ADC(0xl31)
          INTMOD與PRIORITY采用默認(rèn)設(shè)置。因此,可以把的中斷過程寫為:

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



          3.2 中斷與觸摸屏中斷程序
          首先使能芯片的中斷向量。當(dāng)有IRQ中斷到來,CPU會(huì)自動(dòng)到0x18地址處取指。0x18處的指令是CPU根據(jù)中斷源算好的。這里觸摸屏的中斷INT-ADC來了,那么0x18處的指令就是跳轉(zhuǎn)到地址0x9c處。然后就執(zhí)行“l(fā)dr pc,=HandlerINT_ADC”這條指令。這條指令的執(zhí)行結(jié)果就是跳轉(zhuǎn)到“HandlerINT_ADC”處執(zhí)行。
          那么“HandlerINT_ADC”處又是什么指令呢?從訪問絕對(duì)地址的內(nèi)存位置“#define pISR_ADC(*(unsigned*)(ISR_STARTADDRESS+0x9c))”可知,“HandlerINT_ADC”處的地址就是_ISR_STARTADDRESS+0x9C。
          上述語句把無符號(hào)整數(shù)_ISR_STARTADDRESS+0x9c強(qiáng)制轉(zhuǎn)換為指針,指向RAM,通過語句“pISR_ADC=(int)touchscreen;”對(duì)它進(jìn)行訪問,touchscreen即為所定義的觸摸屏中斷程序,該中斷服務(wù)程序必須使用“__irq關(guān)鍵字進(jìn)行聲明。這樣,用戶在自己的程序中,將中斷服務(wù)程序的地址賦給該指針,從而將觸摸屏的中斷與觸摸屏的中斷程序聯(lián)系起來。整個(gè)觸摸屏中斷與觸摸屏中斷程序的聯(lián)系如圖2所示。

          結(jié)語
          本文完成了觸摸屏相關(guān)中斷寄存器的設(shè)置,并編寫了觸摸屏的中斷處理程序,采用編寫“__irq”函數(shù)的實(shí)現(xiàn)了基于中斷的觸摸屏控制。在實(shí)際應(yīng)用中,該程序設(shè)計(jì)簡(jiǎn)單可靠,觸摸點(diǎn)坐標(biāo)值讀取準(zhǔn)確,且無粘滯現(xiàn)象,達(dá)到了預(yù)期效果。


          上一頁 1 2 下一頁

          評(píng)論


          相關(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); })();