8 4-8 5 中斷編程與nvic庫(kù)函數(shù)_第1頁(yè)
8 4-8 5 中斷編程與nvic庫(kù)函數(shù)_第2頁(yè)
8 4-8 5 中斷編程與nvic庫(kù)函數(shù)_第3頁(yè)
8 4-8 5 中斷編程與nvic庫(kù)函數(shù)_第4頁(yè)
8 4-8 5 中斷編程與nvic庫(kù)函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、8.4 中斷編程(掌握)武漢工程大學(xué)計(jì)算機(jī)學(xué)院12-112-2(1)NVIC中斷向量控制器寄存器數(shù)據(jù)結(jié)構(gòu)/基地址:0xE000E000+下列偏移地址typedef structu32 IRQsysTimer32;/中斷類型REG、系統(tǒng)定時(shí)器 ,offset:0x000u32 Enable32;/中斷置位使能寄存器 offset:0x100(128個(gè)字節(jié))/每個(gè)中斷一個(gè)比特,總數(shù):8字*32位=256(有效位240)/中斷清除使能寄存器 offset:0x180(128個(gè)字節(jié))u32 Disable32;/每個(gè)中斷一個(gè)比特,總數(shù):8字*32位=256(有效位240)/中斷置位掛起寄存器 offs

2、et:0x200/中斷清除掛起寄存器 offset:0x280/中斷活動(dòng)位寄存器 offset:0x300/中斷優(yōu)先級(jí)寄存器 offset:0x400u32u32 u32 u32Set32;Clear32; Active64; Priority11;NVIC,*PNVIC;PNVIC p=(NVIC *)0xe000e000;P-Enablen5=|( 0x1 Disablen5= & ( ( 0x1 (n&0x1f) );/關(guān)第n個(gè)中斷 (2)與中斷處理有重大影響內(nèi)核寄存器異常掩蔽寄存器(內(nèi)核特殊功能寄存器SFR)PRIMASK, FAULTMASK BASEPRI內(nèi)核寄存器可以通過(guò)MRS

3、和MSR 訪問(wèn):關(guān)中斷:MOV R0, #1MSR PRIMASK, R0開中斷:MOV R0, #0MSR PRIMASK, R012-3也可用指令:CPSID i ;關(guān)中斷, CPSIE i ;開中斷器 (3)系統(tǒng)控制塊SCB_TypeDef中定義的其他與中斷有關(guān)寄存器(屬于SOC片上外設(shè),由ARM公司統(tǒng)一設(shè)計(jì))12-4向量表偏移量寄存器VTOffset : 0xE000_ED08優(yōu)先級(jí)分組位段AIRC: 0xE000_ED0Csvc 軟件觸發(fā)中斷寄存STIR: 0xE000_EF00表 8-3-9應(yīng)用程序中斷及復(fù)位控制寄存器(AIRCR)表 8-3-10優(yōu)先級(jí)分組設(shè)定與搶占優(yōu)先級(jí)/亞優(yōu)先

4、級(jí)關(guān)系12-5分組編號(hào) AIRCR10:8值(PRIGROUP) PRIx 中搶占優(yōu)先級(jí) 編碼位段 PRIx 亞優(yōu)先級(jí)編碼位段 0 000b 7:1,7b 0:0,1b 1 001b 7:2,6b 1:0,2b 2 010b 7:3,5b 2:0,3b 3 011b 7:4,4b 3:0,4b 4 100b 7:5,3b 4:0,5b 5 101b 7:6,2b 5:0,6b 6 110b 7:7,1b 6:0,7b 7 111b 無(wú),0b 7:0,8b 寄存器名稱與地址 位段 名稱 類型 復(fù)位值 描述 寄存名稱:AIRCR 地址:0xE000ED00 31:16 VECTKEY RW - 訪

5、問(wèn)鑰匙:任何對(duì)該寄存器的寫操作, 都必須同時(shí)把 0x05FA 寫入此段,否則寫操作被忽略。若讀取此半字,則讀回值為 0xFA05。 15 ENDIANESS R - 指示端設(shè)置。1:大端,0:小端。 10:8 PRIGROUP R/W 0 優(yōu)先級(jí)分組 2 SYSRESETREQ W - 請(qǐng)求芯片控制邏輯產(chǎn)生一次復(fù)位 1 VECTCLRACTIVE W - 清零所有異常的活動(dòng)狀態(tài)信息。通常只在調(diào)試時(shí)用,或都在 OS 從錯(cuò)誤中恢復(fù)時(shí)用。 0 VECTRESET W - 復(fù)位 Coretex-M3 微控制器內(nèi)核。 (4)內(nèi)核系統(tǒng)控制模塊寄存器數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)12-6typedef struct/0xE0

6、00ED00-0xE000EFFFvu32 CPUID;/CPUID基寄存器vu32 IRQControlState;/中斷控制狀態(tài)寄存器vu32 ExceptionTableOffset;/向量表偏移寄存器vu32 AIRC;/應(yīng)用中斷/復(fù)位控制寄存器vu32 SysCtrl;/系統(tǒng)控制寄存器vu32 ConfigCtrl;/配置控制寄存器vu32 SystemPriority3;/系統(tǒng)處理優(yōu)先級(jí)寄存器vu32 SysHandlerCtrl;/系統(tǒng)處理控制和狀態(tài)寄存器vu32 ConfigFaultStatus;/配置出錯(cuò)狀態(tài)寄存器vu32 HardFaultStatus;/硬件出錯(cuò)狀態(tài)寄存

7、器vu32 DebugFaultStatus;/調(diào)試出錯(cuò)寄存器vu32 MemoryManageFaultAddr;/存儲(chǔ)器管理出錯(cuò)地址寄存器vu32 BusFaultAddr;/總線出錯(cuò)地址 SCB_TypeDef; (5)中斷建立全過(guò)程的演示下面給出一個(gè)簡(jiǎn)單的例子,以演示如何建立一個(gè)外部中斷。1. 當(dāng)系統(tǒng)啟動(dòng)后,先設(shè)置優(yōu)先級(jí)組寄存器。缺省情況下使用組0(7位搶占優(yōu)先級(jí),1位亞優(yōu)先級(jí))。2. 如果需要重定位向量表,先把硬fault和NMI服務(wù)例程的 入口地址寫到新表項(xiàng)所在的地址中。3. 配置向量表偏移量寄存器,使之指向新的向量表(如果 需要重定位的話)4. 為該中斷建立中斷向量。因?yàn)橄蛄勘砜?/p>

8、能已經(jīng)重定位了, 保險(xiǎn)起見需要先讀取向量表偏移量寄存器的值,再根據(jù)該中斷在 表中的位置,計(jì)算出服務(wù)例程入口地址應(yīng)寫入的表項(xiàng),再填寫之。如果一直使用ROM中的向量表,則無(wú)需此步驟。5. 為該中斷設(shè)置優(yōu)先級(jí)。6. 使能該中斷12-7示例匯編代碼如下:LDR R0, =0xE000ED0C ; 應(yīng)用程序中斷及復(fù)位控制寄存器LDR R1, =0x05FA0500 ; 使用優(yōu)先級(jí)組5 (2/6)STR R1, R0 ;.;在把原表復(fù)制到新向量表MOV R4, #8 ; ROM 中的向量表,(前兩個(gè)字不是中斷向量)LDR R5, =(NEW_VECT_TABLE+8)LDMIA R4!, R0-R1 ;

9、讀取NMI 和硬fault 的向量STMIA R5!, R0-R1 ; 拷貝它們的向量到新表中.;讓系統(tǒng)指向新向量表LDR R0, =0xE000ED08 ; 向量表偏移量寄存器的地址LDR R1, =NEW_VECT_TABLESTR R1, R0 ; 把向量表重定位.設(shè)置優(yōu)先級(jí)組12-8;設(shè)置IRQ7中斷向量、設(shè)置其優(yōu)先級(jí)、開中斷LDR R0, =IRQ7_Handler ;取得IRQ #7 服務(wù)例程的入口地址LDR R1, =0xE000ED08 ; LDR R1, R1ADD R1, R1,#(4*(7+16); 計(jì)算IRQ #7 服務(wù)例程的入口地址向量表偏移量寄存器的地址STR R0, R1.; 在向量表中寫入IRQ #7 服務(wù)例程的入口地址LDR R0, =0xE000E400 ; 外部中斷優(yōu)先級(jí)寄存器基地址MOV R1, #0xC0 STRB R1, R0,#7.LDR R0, =0xE00

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論