关于ARM中断的问题
1. ARM默认是关闭IRQ中断的,当要用到IRQ中断时,必须先开启IRQ中断。LPC2100、LPC2200的启动代码默认是关闭IRQ中断和FIQ中断的。如果用户需要使用这两个中断,则要设置CPSR寄存器的I位和F位。这需要在特权模式下处理。最简单的方法是在启动代码中设置。
InitStack
MOV R0, LR
;Build the SVC stack
;设置管理模式堆栈
MSR CPSR_c, #0xd3
LDR SP, StackSvc
;Build the IRQ stack
;设置中断模式堆栈
MSR CPSR_c, #0xd2
LDR SP, StackIrq
;Build the FIQ stack
;设置快速中断模式堆栈
MSR CPSR_c, #0xd1
LDR SP, StackFiq
;Build the DATAABORT stack
;设置中止模式堆栈
MSR CPSR_c, #0xd7
LDR SP, StackAbt
;Build the UDF stack
;设置未定义模式堆栈
MSR CPSR_c, #0xdb
LDR SP, StackUnd
;Build the SYS stack
;设置系统模式堆栈
MSR CPSR_c, #0x5f(该语句即,使能了IRQ中断)(原来此位置是#0xdfIRQ中断是禁止的)
LDR SP, =StackUsr
MOV PC, R0
页:
[1]