中斷實驗課件_第1頁
中斷實驗課件_第2頁
中斷實驗課件_第3頁
中斷實驗課件_第4頁
中斷實驗課件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、中斷實驗程序介紹本實驗以鍵盤中斷為例,介紹ARM微處理器中斷處理過程。實驗現(xiàn)象:系統(tǒng)啟動后,按12345678任意鍵,相應的八段數(shù)碼管就會被點亮。AREA boot ,CODE ,READONLYENTRYB Reset_HandlerB Undefined_HandlerB SWI_HandlerB Prefetch_HandlerB DataAbort_HandlerNOPB IRQ_Handler B FIQ_HandlerUndefined_HandlerBUndefined_HandlerSWI_Handler BSWI_HandlerPrefetch_HandlerBPrefetc

2、h_HandlerDataAbort_HandlerBDataAbort_Handler;IRQ_Handler;BIRQ_FunctionFIQ_HandlerBFIQ_HandlerReset_Handler如果中斷處理程序所在的物理地址小于32MB,可使用B跳轉(zhuǎn)指令;當跳轉(zhuǎn)范圍大于32MB時,需使用LDR指令。對于程序中未使用的中斷,可使中斷異常跳轉(zhuǎn)到一個只含返回指令的啞函數(shù)或跳轉(zhuǎn)到自身標號地址處,以防止中斷異常引起系統(tǒng)的混亂。NOP一定不能去掉,必須要保證中斷向量表正確建立。 中斷初始化過程處理器要對中斷進行處理時,需要對CPSR的IRQ和FIQ與ICMR(中斷控制器屏蔽寄存器)相應的

3、中斷屏蔽位進行正確的配置:即當CPSR的IRQ 、FIQ 位為“0”時,ARM 處理器可以響應IRQ 、FIQ 中斷,如果為“1”時,ARM 處理器將不響應IRQ或FIQ中斷。同樣,當ICMR 的相應位為“1”時,相應的中斷被開啟,為”0”時,相應的中斷被屏蔽。IMPORT ICMRIMPORT init_ICMREXPORT Enableirq;*;Enable & Set Interrupt;*AREA Enableirq, CODE, READONLYENTRYmrs r1, CPSRbic r1, r1,#0 x80msr CPSR_c, r1ldr r1, =ICMRldr r2,

4、=init_ICMRstr r2,r1ENDInit.s鍵盤中斷開啟過程 ldr r1, =ICMR ;/讀取中斷控制屏蔽寄存器ldr r2, =init_ICMR; init_ICMR= x00000010str r2,r1; /開啟鍵盤中斷,屏蔽 其他所有中斷 LDR R1,=0 x40e00000 ;GAFR3_LLDR R0,=0 x020a9550 ;GPIO STR R0,R1,#0 x6C;GPDR3ldr R0,=0 x21380;GPIOSTR R0,R1,#0 x10c ldr r1,=0 x41500000;KPCldr r0,=0 x3FBFF9C3str r0,r1,

5、#0 x0ldr r0,=0 x707str r0,r1,#0 x48Init.s矩陣鍵盤接口電路四條行線分別對應:GPIO100、GPIO101、GPIO102、GPIO99四條列線分別對應:GPIO103、GPIO104GPIO105、GPIO96鍵盤掃描:先全部輸出“1”,確定行在逐列輸出“1”,確定列行輸入列輸出1031051049610110010299作為列線的GPIO引腳的復用功能作為行線的GPIO引腳的復用功能鍵盤控制寄存器第11位:矩陣鍵盤中斷使能-1第12位:矩陣鍵盤使能-1第13:20:位矩陣鍵盤掃描線設置,我們這里全列線設為掃描線。第23:25位:矩陣鍵盤列設置,可設為

6、最大值-111。第26:28位:矩陣鍵盤行設置,可設為最大值-111。第29位:自動掃描設置-1鍵盤去抖寄存器KPKDI0 x707表示直入鍵盤和矩陣鍵盤的去抖時間都設為7ms主程序開始設置中斷向量表初始化內(nèi)存初始化堆棧初始化GPIO初始化中斷主程序等待中斷發(fā)生中斷發(fā)生跳轉(zhuǎn)到中斷向量表執(zhí)行中斷處理程序是否鍵盤中斷一旦外部中斷觸發(fā)時,ARM處理器通過自己的硬件特性,執(zhí)行到中斷向量表,通過觸發(fā)的中斷類型來判斷到底執(zhí)行哪個中斷處理函數(shù),在這里只打開了鍵盤中斷,屬于外部中斷,因此當鍵盤被按下時,便產(chǎn)生鍵盤中斷,程序跳轉(zhuǎn)到IRQ_Handler 函數(shù)處運行 Interrupt.c#include #de

7、fine LED_CS2 (*(volatile unsigned short int *)(0 x10300000) /LED1 and LED2#define LED_CS3 (*(volatile unsigned short int *)(0 x10400000) /LED3 and LED4#define KPAS_VALUE(*(volatile unsigned char *)(0 x41500020) /Matrix Keypad 自動掃描寄存器int main(void) unsigned short int temp = 0 x8F8F;LED_CS2 = temp;LED

8、_CS3 = temp; while(1) /waiting for interruptreturn 0;Interrupt.cInterrupt.cvoid IRQ_Handler(void)IRQ_Function();void IRQ_Function(void)char i;unsigned short int kbd_buff;i = KPAS_VALUE;switch (i)case 0 x00:/key-press 1kbd_buff=0 x8F79;LED_CS2 = kbd_buff;LED_CS3 = 0 x8F8F;break;case 0 x01: /key-press 2kbd_buff=0 x248F;LED_CS2 = kbd_buff;LED_CS3 = 0 x8F8F;break; case 0 x12: /key-press 6kbd_buff=0 x028F;LED_CS2 = kbd_buff;LED_CS3 = 0 x8F8F; break;case 0 x20: /key-press 7kbd_buff=0 x8F78;LED_CS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論