按鍵B連接到GPIOC-5

Interrupt架構

Interrupt Table

Priority

暫存器

IRQ、FIQ設定

main.s
.global _start
.equiv GPIOC_OUT, 0xc000a080
.equiv GPIOC_OUTENB, 0xc000a084
.equiv GPIOC_INTENB, 0xc000a090
.equiv GPIOC_DET, 0xc000a094
.equiv INTMODEL, 0xc0000808
.equiv INTMASKL, 0xc0000810
.equiv INTPENDL, 0xc0000820
.arm
.text
_start:
b reset
b .
b .
b .
b .
b .
b irq_handler
b .
irq_handler:
ldr r0, =GPIOC_OUT
eor r2, #(1 << 16)
str r2, [r0]
ldr r0, =INTPENDL
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =GPIOC_DET
ldr r1, =0xffffffff
str r1, [r0]
subs pc, lr, #4
reset:
mrs r0, cpsr
bic r0, #0x80
msr cpsr_c, r0
ldr r0, =INTMODEL
ldr r1, =0
str r1, [r0]
ldr r0, =INTMASKL
ldr r1, =0
str r1, [r0]
ldr r0, =INTPENDL
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =GPIOC_OUTENB
ldr r1, =(1 << 16)
str r1, [r0]
ldr r0, =GPIOC_OUT
ldr r2, =(1 << 16)
str r2, [r0]
ldr r0, =GPIOC_INTENB
ldr r1, =(1 << 5)
str r1, [r0]
b .
.end
完成
