tuolaji 发表于 2010-9-24 20:48:07

关于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]
查看完整版本: 关于ARM中断的问题