词条 | PC_DOSSaveReturn |
释义 | 解释因为UC/OS-II 是多任务,而且为每个任务开辟一个堆栈,所以单线程的DOS环境应该保存,在退出µC/OS-II 程序时返回到DOS。调用PC_DOSSaveReturn()可以保存当前DOS环境. 源码ucos 中 DOSSaveReturn 源码: void PC_DOSSaveReturn (void) { #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr; #endif PC_ExitFlag = FALSE; /* Indicate that we are not exiting yet! */ OSTickDOSCtr = 1; /* Initialize the DOS tick counter */ PC_TickISR = PC_VectGet(VECT_TICK); /* Get MS-DOS's tick vector */ PC_VectSet(VECT_DOS_CHAIN, PC_TickISR); /* Store MS-DOS's tick to chain */ setjmp(PC_JumpBuf); /* Capture where we are in DOS */ if (PC_ExitFlag == TRUE) { /* See if we are exiting back to DOS */ OS_ENTER_CRITICAL(); PC_SetTickRate(18); /* Restore tick rate to 18.2 Hz */ OS_EXIT_CRITICAL(); PC_VectSet(VECT_TICK, PC_TickISR); /* Restore DOS's tick vector */ PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the display */ exit(0); /* Return to DOS */ } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。