abivan (20.06.2008 14:14, просмотров: 198) ответил Alex B. на никак. только убить первую задачу и использовать ее TCB и стек для создания второй. Естественно все это делается в какой-то третьей задаче
А починить низя(в todo)? Вот пример использования... и еще просьба нельзя ли увеличить шрифт в http://wiki.pic24.ru/doku.php/tnkernel, а то при печати слишком мелко(раза в 2) пример использования, как бы ты сделал по другому.
void TaskDesktop( void ){
OStypeMsgP msgP;
static t_ControlMsg ControlMsg;
static int TaskDesktopErrno=0;
OSSignalBinSem(BINSEM_RSRC_DISLAY_ALLP);
loop{
OS_WaitMsgQ(MSGQ_ScanCode_P, &msgP, OSNO_TIMEOUT, TaskDesktopLabel1);
LoadLeds(SEG_OFF);
switch(*(BYTE*)msgP){
case SCAN_F3:
DisplayMsgBuff.p=DevContents.pVer;
DisplayMsgBuff.bType=MsgTypeText| LCD_SHIFT;
OSSignalMsgQ(MSGQ_DISPLAY_P,(OStypeMsgP)&DisplayMsgBuff);
continue;
case SCAN_ENTER| KBD_PRESS_FLAG : /* меню юзера */
gl_bTaskMenuPar=ID_PAR_USRPASS;
OS_Replace(TaskMenu, TaskMenu_Prio);
break;
case SCAN_SYS_MENU | KBD_PRESS_FLAG :
gl_bTaskMenuPar=ID_PAR_SYSPASS; /* меню админа */
OS_Replace(TaskMenu, TaskMenu_Prio);
break;
case SCAN_DEFAULT_RESTORE | KBD_PRESS_FLAG :{
OS_Replace(TaskDefaultRestore, TaskDefaultRestore_Prio); /*задача восстановления*/
break;
}
case SCAN_ESC| KBD_PRESS_FLAG :{ //NULL Correct
BYTE bNulE;
...
continue;
}
default:
continue;
}
}
}