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