?? irq.s
字號:
;/*******************************************************************************************************
;** 西安傅立葉電子科技
;** Xian FFT Electornic Technology
;** http://www.fftchina.com
;********************************************************************************************************/
;// The irq handle that what allow the interrupt nesting.
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 ; The label for exports
IMPORT $IRQ_Exception_Function ; The imported labels
$IRQ_Label
SUB LR, LR, #4 ; Calculate the returning address
STMFD SP!, {R0-R3, R12, LR} ; Protects the task environments
MRS R3, SPSR ; Protects the status variable
STMFD SP, {R3,LR}^ ; Protects SPSR and SP in user status, Notice: DO NOT write back.
; If the SP is written back, it should be adjusted to its appropriate value later.
NOP
SUB SP, SP, #4*2
MSR CPSR_c, #(NoInt | SYS32Mode) ; Switch to the System Mode
BL $IRQ_Exception_Function ; call the C interrupt handler funtion
MSR CPSR_c, #(NoInt | IRQ32Mode) ; Switch bak to IRQ mode
LDMFD SP, {R3,LR}^ ; Recover SPSR and SP in user status, Notic: DO NOT write back.
; If the SP is written back, it should be adjusted to its appropriate value later.
MSR SPSR_cxsf, R3
ADD SP, SP, #4*2 ;
LDMFD SP!, {R0-R3, R12, PC}^ ;
MEND
;/* Add interrupt handler here,user could change it as needed */
;Timer0_Handler HANDLER Timer0
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -