?? irq.s
字號:
IRQHandler
stmfd sp!,{r0-r12,lr} ;斷點保護,保存寄存器
bl t1_irq_asm ;跳轉到T1中斷處理
ldr r12,=0x80000000
mov r2,#0xffffffff
str r2,[r12,#0x06c0] ;清除T1中斷標志
ldmfd sp!,{r0-r12,lr} ;恢復寄存器
subs pc,lr,#4 ;IRQ中斷返回
t1_irq_asm ;T1中斷處理,交替改變PD0狀態
ldr r12,=0x80000000
ldrb r2,[r12,#0x3]
eor r2,r2,#0x01 ;改變PD0狀態
strb r2,[r12,#0x3]
mov pc,lr ;T1中斷處理返回
;Pre-defined constants
USERMODE EQU 0x10
IRQMODE EQU 0x12
SVCMODE EQU 0x13
MODEMASK EQU 0x1f
NOINT EQU 0xc0
mrs r0,cpsr
bic r0,r0,#MODEMASK
orr r1,r0,#IRQMODE|NOINT
msr cpsr,r1 ;IRQMode
ldr sp,=IRQStack
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#SVCMODE
msr cpsr,r1 ;SVCMode
ldr sp,=SVCStack
;T1 timer setup
ldr r12,=0x80000000
ldr r1,=0x10
str r1,[r12,#0x100] ;設置T1定時器運行模式
ldr r1,=0xd0
str r1,[r12,#0x300] ;設置T1定時器定時常數
ldr r0,=0x100
str r0,[r12,#0x280] ;使能T1定時器中斷
;Usermode setup
mrs r0,cpsr
bic r0,r0,#MODEMASK
orr r1,r0,#USERMODE
msr cpsr,r1 ;UserMode
ldr sp,=UserStack
IMPORT C_vMain
bl C_vMain ;調用C程序
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -