都说这个操作只能在特权模式下执行,一般都是软中断实现的。<br />但FreeRtos是这样写的:<br /> #define portDISABLE_INTERRUPTS() <br />asm volatile ( <br /> "STMDB SP!, {R0}
" /* Push R0. */ <br /> "MRS R0, CPSR
" /* Get CPSR. */ <br /> "ORR R0, R0, #0xC0
" /* Disable IRQ, FIQ. */ <br /> "MSR CPSR, R0
" /* Write back modified value. */ <br /> "LDMIA SP!, {R0} " ) /* Pop R0. */<br /><br />难道这个只能在中断中调用吗, 那么在FreeRTOS中一般的任务如何关闭中断进入一个晶元操作? |
|