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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > s3c2440外部中斷

          s3c2440外部中斷

          作者: 時間:2016-11-19 來源:網絡 收藏
          上文用到了pwm控制蜂鳴器,實現了蜂鳴器頻率的改變,有一點不好就是蜂鳴器一直響,可以用一個交互的方式來關閉蜂鳴器。這里就選擇按鍵,開發(fā)板上一共4個按鍵,對應這4個外部中斷EINT0,EINT1,EINT2和EINT4(為什么不是EINT0~3呢,讓人蛋疼)

          要使用外部中斷,首先要初始化外部中斷。外部中斷跟外部引腳F和G復用。要把相應的引腳配置為中斷模式:

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


          配置完引腳后,還需要配置具體的中斷功能。我們要打開某一中斷的屏蔽,這樣才能響應該中斷,相對應的寄存器為INTMSK有些位對應著多個外部中斷;




          由于存在位對應著多個外部中斷,如上圖EINT4~7EINT8~23對應INTMSK一個屏蔽位,所以要精確打開某一個外部中斷就要配置EINTMASK。下圖只列出了一部分,對于EINT4~23都適用。




          外部中斷也要有一個觸發(fā)的方式,選擇低電平、高電平、上升沿、下降沿觸發(fā)等方式,這個要配置EXTINT寄存器



          如前面博文gun-ucos的s3c2440處理器中斷部分所述,因為中斷來的時候硬件會把SRCPND和INTPND置1,所以需要把相應的位清零(通過置1來清零),對于外部中斷還要判斷具體是哪個外部中斷,這就要看EINTPEND寄存器了。這個寄存器同樣也要通過置1來清零。


          下面給出段代碼,當系統(tǒng)啟動后開始蜂鳴,如果按下key2 那么設置GPB0位輸出模式,并且輸出低電平,蜂鳴器停止!

          void init_key(void){rGPFCON	&= ~0x33f;rGPFCON	|= 0x22a;rINTMSK &= ~( (1<<0)|(1<<1)|(1<<2)|(1<<4));		/// enable eintrEINTMASK	&= ~(1<<4);				/// enable eint4rEXTINT0	&= ~0x70777;rEXTINT0	|= 0x20222;pIRQ_EINT0	= (uint32)key_int0;pIRQ_EINT1	= (uint32)key_int1;pIRQ_EINT2	= (uint32)key_int3;pIRQ_EINT4_7	= (uint32)eint4_7;}

          其中 key_int 0 1 3都是空函數(這里的對應關系沒驗證,比如按開發(fā)板上的K1不一定執(zhí)行到key_int1函數)。

          按鍵2由eint4_7處理,在這個函數里面清除 rEINTPEND,關閉蜂鳴器:

          void eint4_7(void){UINT32 eintpnd;UINT8	index;eintpnd	= rEINTPEND;for(index = 4;index < 24;index ++){if(eintpnd & (1<


          關鍵詞: s3c2440外部中

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();