?? irq.s
字號:
;/****************************************Copyright (c)**************************************************
;**
;** 西南科技大學(xué)計算機學(xué)院
;**
;** http://cs.swust.edu.cn
;**
;** 日期: 2004.11.8
;** 描述: lpc2200.h文件,硬件相關(guān)資源配置文件,支持LPC2200系列芯片和Lpc2100系列
;** 芯片,對于每個C或C++程序工程必須包含該文件來完成對ARM資源的分配,所有
;** VPB外設(shè)地址由該文件分配,分配的地址應(yīng)保持與實際硬件資源相同。錯誤的分
;** 配將導(dǎo)致程序的運行不正常。
;**
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
;/********************************************************************************************************/
NoInt EQU 0x80
USR32Mode EQU 0x10
SVC32Mode EQU 0x13
SYS32Mode EQU 0x1f
IRQ32Mode EQU 0x12
FIQ32Mode EQU 0x11
CODE32
AREA IRQ,CODE,READONLY
MACRO
$IRQ_Label HANDLER $IRQ_Exception_Function
EXPORT $IRQ_Label ; 輸出的標號
IMPORT $IRQ_Exception_Function ; 引用的外部標號
$IRQ_Label
SUB LR, LR, #4 ; 計算返回地址
STMFD SP!, {R0-R3, R12, LR} ; 保存任務(wù)環(huán)境
MRS R3, SPSR ; 保存狀態(tài)
STMFD SP!, {R3}
STMFD SP, {LR}^ ; 保存用戶狀態(tài)的SP,注意不能回寫
; 如果回寫的是用戶的SP,所以后面要調(diào)整SP
SUB SP, SP, #4
MSR CPSR_c, #(NoInt | SYS32Mode) ; 切換到系統(tǒng)模式
BL $IRQ_Exception_Function ; 調(diào)用c語言的中斷處理程序
MSR CPSR_c, #(NoInt | IRQ32Mode) ; 切換回irq模式
LDMFD SP, {LR}^ ; 恢復(fù)用戶狀態(tài)的SP,注意不能回寫
; 如果回寫的是用戶的SP,所以后面要調(diào)整SP
ADD SP, SP, #4 ;
LDMFD SP!, {R3}
MSR SPSR_cxsf, R3
LDMFD SP!, {R0-R3, R12, PC}^ ;
MEND
;/* 以下添加中斷句柄,用戶根據(jù)實際情況改變 */
;Timer0_Handler HANDLER Timer0
END
;/*********************************************************************************************************
;** End Of File
;********************************************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -