Realview MDK 中不用手动开中断的原因

时间:2022-08-10 16:41:55

startup.s启动代码文件:

;  Enter Supervisor Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #SVC_Stack_Size

;  Enter User Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_USR

其中

1.

MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit

:OR: 是内置的操作符 详见帮助文档  Operator precedence

这一句将 CPSR的I F位置位 关中断

2.

MSR     CPSR_c, #Mode_USR

Mode_USR  =0x10

进入用户中断模式前I F位清位 开中断

这就是为什么在 Realview中不用手动开中断的原因了