實(shí)驗(yàn)三:中斷實(shí)驗(yàn)_第1頁(yè)
實(shí)驗(yàn)三:中斷實(shí)驗(yàn)_第2頁(yè)
實(shí)驗(yàn)三:中斷實(shí)驗(yàn)_第3頁(yè)
實(shí)驗(yàn)三:中斷實(shí)驗(yàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)三 向量中斷與PLL一、實(shí)驗(yàn)?zāi)康?掌握ARM 的向量中斷與非向量中斷工作原理,編程實(shí)現(xiàn)ARM 的向量IRQ。2掌握LPC2103中斷相關(guān)的寄存器配置方法。3掌握片內(nèi)PLL的使用方法。二、實(shí)驗(yàn)儀器設(shè)備PC機(jī) keil軟件 ARM2103實(shí)驗(yàn)開發(fā)板 J-LINK仿真調(diào)試器三、實(shí)驗(yàn)原理1向量中斷 LPC2100系列ARM7微控制器的中斷管理是由向量中斷控制器VIC操作的。向量中斷控制器具有32個(gè)中斷請(qǐng)求輸人(32個(gè)中斷通道,但LPC2103只使用了19個(gè)通道號(hào)),可將它們?cè)O(shè)置為FIQ、向量IRQ和非向量IRQ,通過編程不同外設(shè)的向量IRQ中斷優(yōu)先級(jí),可以實(shí)現(xiàn)動(dòng)態(tài)分配調(diào)整。FIQ中斷優(yōu)先級(jí)最高,向

2、量IRQ具有中等優(yōu)先級(jí),非向量IRQ的優(yōu)先級(jí)最低??焖僦袛嗾?qǐng)求(FIQ)具有最高優(yōu)先級(jí)。如果分配給FIQ 的請(qǐng)求多于1 個(gè),VIC 將結(jié)合中斷請(qǐng)求向ARM 處理器產(chǎn)生FIQ 信號(hào)。當(dāng)只有一個(gè)被分配為FIQ 時(shí)可實(shí)現(xiàn)最短的FIQ 等待時(shí)間,因?yàn)檫@時(shí)FIQ 服務(wù)程序不必再轉(zhuǎn)移到中斷服務(wù)程序中,而是直接從中斷向量單元執(zhí)行。但如果分配給FIQ 級(jí)的中斷多于1 個(gè),F(xiàn)IQ 服務(wù)程序從VIC 中讀出一個(gè)字以識(shí)別產(chǎn)生中斷請(qǐng)求的FIQ 中斷源是哪一個(gè)。向量IRQ 具有中等優(yōu)先級(jí)。該級(jí)別可分配16 個(gè)中斷請(qǐng)求。任意中斷請(qǐng)求中都可分配到16 個(gè)向量IRQ slot 之一,其中slot0 具有最高優(yōu)先級(jí),而slot

3、15 則為最低優(yōu)先級(jí)。非向量IRQ 的優(yōu)先級(jí)最低。VIC 結(jié)合所有向量和非向量IRQ 向ARM 處理器產(chǎn)生IRQ 信號(hào)。通過讀取VIC 寄存器并跳轉(zhuǎn)到寄存器指向的地址來啟動(dòng)執(zhí)行IRQ 服務(wù)程序。如果有任意一個(gè)向量IRQ 發(fā)出請(qǐng)求, VIC 則提供請(qǐng)求IRQ 服務(wù)程序的最高優(yōu)先級(jí)的地址,否則提供默認(rèn)程序的地址,該默認(rèn)程序由所有非向量IRQ 共用。默認(rèn)程序可讀取任何VIC 寄存器以確定哪個(gè)IRQ 被激活。相關(guān)的寄存器應(yīng)用解釋如下:檢查中斷狀態(tài)或中斷通道VICIRQStatus IRQ狀態(tài)標(biāo)志,置1的位表示對(duì)應(yīng)的通道號(hào)中斷有效(此通道設(shè)置為IRQ,并已使能)。只讀。VICFIQStatus FIQ狀

4、態(tài)標(biāo)志,置1的位表示對(duì)應(yīng)的通道號(hào)中斷有效(此通道設(shè)置為FIQ,并已使能)。只讀。VICRawIntr 所有中斷的狀態(tài),32個(gè)通道的中斷請(qǐng)求軟件中斷狀態(tài)(不管是否使能)。只讀。中斷通道IRQ或FIQ選擇VICIntSelect 中斷選擇即選擇IRQ或FIQ中斷,置1時(shí)表示對(duì)應(yīng)通道設(shè)置為FIQ,否則為IRQ。讀寫。中斷使能及軟件中斷VICIntEnable 中斷使能,置1時(shí)表示對(duì)應(yīng)通道使能,否則為禁止。讀寫。VICIntEnclr 中斷使能清零,置1時(shí)清除對(duì)應(yīng)通道使能標(biāo)志。只寫。VICSoftInt 軟件中斷設(shè)置,置1時(shí)表示對(duì)應(yīng)通道產(chǎn)生中斷,只能通過VICSoftClear清除軟件中斷標(biāo)志。讀寫。

5、VICSoftClear 軟件中斷清零,清除相應(yīng)通道的軟件中斷標(biāo)志。只寫。IRQ中斷向量VICVectAddr 向量中斷地址,當(dāng)發(fā)生向量IRQ時(shí),此寄存器是最高優(yōu)先線IRQ通道的向量地址值。讀寫。IRQ向量原地址VICDefVectAddr 非向量中斷的向量地址,當(dāng)發(fā)生非向量中斷時(shí),即將此寄存器值復(fù)制到VICVectAddr中。讀寫。VICVectAddr0l 5優(yōu)先級(jí)015向量中斷的向量地址,當(dāng)有對(duì)應(yīng)優(yōu)先級(jí)向量IRQ中斷時(shí),將會(huì)把保存的值復(fù)制到VICVectAddr中。讀寫。向量IRQ中斷優(yōu)先級(jí)設(shè)置VICVectCntl015 向量控制寄存器015,即向量?jī)?yōu)先級(jí)寄存器??梢园迅鱾€(gè)IRQ中斷通

6、道分配到不同的向量控制寄存器中,使其成為向量中斷,并具有一定的優(yōu)先級(jí)。讀寫。設(shè)置向量中斷,即是把中斷通道分配到向量IRQ中斷優(yōu)先級(jí)寄存器中,當(dāng)然對(duì)應(yīng)通道必須設(shè)置為IRQ中斷類型,而不能為FIQ中斷類型。在VIC中,F(xiàn)IQ無中斷優(yōu)先級(jí),也無向量地址,一般只分配一個(gè)通道為FIQ中斷。VICVectCntl015寄存器的d5位是控制是否使能此優(yōu)先級(jí)的向量功能,若復(fù)位為0,則關(guān)閉其向量功能。此向量IRQ變?yōu)榉窍蛄縄RQ。雜項(xiàng)CProtection 保護(hù)使能,若最低位置為l,則只允許在特權(quán)模式下訪問VIC寄存器。VIC基本操作方法如下:設(shè)置IRQFIQ中斷,若是IRQ中斷,則可以設(shè)置為向量中斷并分配中斷

7、優(yōu)先級(jí),否則為非向量IRQ。然后可以設(shè)置中斷允許,以及向量中斷對(duì)應(yīng)地址或非向量中斷默認(rèn)地址。當(dāng)有中斷后,若是IRQ中斷,則可以讀取向量地址寄存器,然后跳轉(zhuǎn)到相應(yīng)代碼。當(dāng)要退出中斷時(shí),對(duì)向量地址寄存器寫0,通知VIC中斷結(jié)束。當(dāng)發(fā)生中斷時(shí),處理器將會(huì)切換處理器模式,同時(shí)相關(guān)的寄存器也將會(huì)映射。LPC2103具有3個(gè)外部中斷輸入,這3個(gè)外部中斷屬電平中斷方式,可用來喚醒掉電的微控制器。LPC211x、LPC212x、LPC2194則具有4個(gè)外部中斷,可以通過EXTMODE寄存器設(shè)置為電平觸發(fā)中斷或邊沿觸發(fā)中斷方式,可用來喚醒掉電的微控制器。EXINT寄存器為中斷標(biāo)志寄存器,低3位與外部中斷引腳EI

8、NT2、EINT1、EINT0對(duì)應(yīng),為1時(shí)表示外部中斷有效??梢酝ㄟ^軟件向其寫入清零標(biāo)志位。外部中斷將會(huì)連接到VIC,使用向量中斷控制器進(jìn)行管理。EXTWAKE寄存器外部中斷喚醒掉電(微控制器掉電)的允許寄存器,為1時(shí)允許其喚醒掉電,否則不允許該中斷喚醒CPU。在沒有時(shí)鐘源的情況下,外部中斷EINT0、EINT1、EINT2仍可以工作,即它們能喚醒掉電的微控制器。四、實(shí)驗(yàn)電路圖 3-3 中斷處理使用外部中斷0實(shí)現(xiàn)點(diǎn)亮熄滅控制。按鍵KEY1與EINT0引腳連接,當(dāng)按下按鍵時(shí),即可觸發(fā)外部中斷。從LPC2103的數(shù)據(jù)手冊(cè)上可以看到,外部中斷0占用的VIC通道號(hào)為14。使用中斷向量控制器的向量IRQ

9、功能,實(shí)現(xiàn)EINT03中斷處理。首先把EINT0設(shè)置為下降沿觸發(fā)方式,然后設(shè)置為向量IRQ中斷,分配優(yōu)先級(jí)并使能向量,最后設(shè)置相關(guān)向量地址寄存器及中斷使能。當(dāng)有IRQ中斷時(shí),VIC會(huì)將中斷向量地址放入向量地址寄存器VICVectAddr使中斷處理能夠快速地找到相應(yīng)的向量,進(jìn)行IRQ處理。在IRQ處理過程中,IRQ中斷默認(rèn)是被禁止的,如有需要,也可設(shè)置IRQ中斷允許。處理完畢后,寫向量地址寄存器為0,通知VIC中斷處理結(jié)束。五、實(shí)驗(yàn)內(nèi)容1.外部中斷及向量中斷處理控制2.編程實(shí)現(xiàn)通過外部中斷及向量中斷處理控制蜂鳴器。六、操作步驟(1)啟動(dòng)keil,新建工程。(2)新建C源文件,添加到工程,添加頭文

10、件LPC21xx.h及config.h 。(3)配置工程選項(xiàng)。(4)編譯鏈接工程。(5)調(diào)試,運(yùn)行,觀察實(shí)驗(yàn)結(jié)果。七、實(shí)驗(yàn)要求1.總結(jié)分析實(shí)驗(yàn)過程中遇到的問題2.畫出中斷實(shí)驗(yàn)中斷函數(shù)設(shè)置流程圖八、參考程序1 EINT0及IRQ/#include <intrinsics.h>#include <stdio.h>#include"LPC21xx.h"#include "config.h"void delay_ms(int dly) unsigned int i; for(;dly>0;dly-) for(i=0;i<500

11、0;i+); void _irq IRQ_Ex0(void)/IRQ_Count+; /* 進(jìn)入中斷加1 */ if(IO0PIN&LED1CON)=0) IO0SET = LED1CON; else IO0CLR = LED1CON; while(IO0PIN & (KEY1) = 0) ; /* 等待按鍵松開 */EXTINT = ; /* 清中斷標(biāo)志 */VICVectAddr = ; /* 向量中斷結(jié)束 */void Init_Ex0(void) /*GPIO、外部中斷初始化*/ PINSEL1 = (PINSEL1 & 0xFFFFFFFC) | 0x01;

12、/* 設(shè)置P0.16為外部中斷0管腳 */ EXTMODE = ; /* 跟下條語(yǔ)句一起決定低電平觸發(fā) */ EXTPOLAR = 0x00; /*向量中斷控制初始化*/ VICIntSelect = 0 << 14; /* 選擇EINT0為IRQ中斷 */ VICVectCntl0 = 0x20 | 14; /* 將外部中斷0分配給向量中斷0 */ VICVectAddr0 = (unsigned int)IRQ_Ex0; /* 設(shè)置中斷服務(wù)程序地址 */ VICIntEnable = 1 << ; /* 使能EINT0中斷 */ EXTINT = ; /* 清除EINT0中斷標(biāo)志 */void

溫馨提示

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

評(píng)論

0/150

提交評(píng)論