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