《深入浅出》中写到:用户模式不能直接切换到其他模式,只能通过SWI进入特权模式。 当运行在用户模式时,企图通过调用IRQ开关函数来控制中断的开关,但是没有成功。程序如下: void IRQ_En( void ) { unsigned int temp; __asm { MRS temp, CPSR BIC temp, temp, #0x80 MSR CPSR_c, temp } } 跟踪发现当执行到MSR CPSR_c, temp时,CPSR_c的内容并不改变。书上只是说不能改变模式,并没有说不可以改变其他标志位。是不是CPSR_c是作为一个整体,在用户模式下不能被修改? 若果在其他模式下,例如系统模式,运用上面的函数可以正常开启IRQ中断。 |