|
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中断)(原来此位置是#0xdf IRQ中断是禁止的)
LDR SP, =StackUsr
MOV PC, R0 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|