1. 程式人生 > >UCOS iii 任務創建_刪除_掛起_恢復

UCOS iii 任務創建_刪除_掛起_恢復

大小 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,     //
任務優先級 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); //存放該函數錯誤時的返回值
View Code

任務刪除: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 任務創建_刪除_掛起_恢復