UCOS iii 任務創建_刪除_掛起_恢復
阿新 • • 發佈:2019-02-28
大小 suspend 沒有 tick 恢復 gif 時間片 堆棧 時間
任務創建:
1 //創建開始任務函數 2 OSTaskCreate((OS_TCB * )&StartTaskTCB, //任務控制塊 3 (CPU_CHAR * )"start task", //任務名字 4 (OS_TASK_PTR )start_task, //任務函數 5 (void * )0, //傳遞給任務函數的參數 6 (OS_PRIO )START_TASK_PRIO, //View Code任務優先級 7 (CPU_STK * )&START_TASK_STK[0], //任務堆棧基地址[0是向上增長,START_STK_SIZE-1向下] 8 (CPU_STK_SIZE)START_STK_SIZE/10, //任務堆棧深度限位 9 (CPU_STK_SIZE)START_STK_SIZE, //任務堆棧大小 10 (OS_MSG_QTY )0, //任務內部消息隊列能夠接收的最大消息數目,為0時禁止接收消息 11(OS_TICK )0, //當使能時間片輪轉時的時間片長度,為0時為默認長度, 12 (void * )0, //用戶補充的存儲區 13 (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任務選項 14 (OS_ERR * )&err); //存放該函數錯誤時的返回值
任務刪除:OSTaskDel();
某個任務只需要運行一次,完成後將其刪掉,
刪除後任務堆棧,任務塊沒有釋放.可以使用內存管理分配內存
任務掛起: OSTaskSuspend();
任務暫停運行,使用掛起函數,以後恢復.
任務恢復: OSTaskResume();
恢復被掛起的任務
時間片輪轉調度
設置宏定義:OS_CFG_SCHED_ROUND_ROBIN_EN定義為1,
開啟時間片調度,設置長度:
1 OSSchedRoundRobinCfg( 2 3 en; //打開或關閉時間片調度:DEF_ENABLE 或 DEF_DISABLE 4 dflt_time_quanta; //時間片長度, 5 *p_err; //返回的錯誤碼 6 )View Code
放棄時間片:
void OSSchedRoundRobinYield (OS_ERR *p_err);
UCOS iii 任務創建_刪除_掛起_恢復