1.最近項目遇到華為的LiteOS小型操作系統,使用學習
2. 先打開一個工程LiteOS_Kernel-master\projects\LPC824_LITE_KEIL
3. main.c里面2個關鍵函數。
1 LOS_KernelInit(); //系統初始化 2 LOS_Start();//系統啟動
4.任務創建函數
1 void LOS_Demo_Entry(void) 2 { 3 UINT32 uwRet; 4 TSK_INIT_PARAM_S stTaskInitParam; 5 6 (VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S)); //堆棧初始化為0 7 stTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)LOS_Demo_Tskfunc; //任務入口函數 8 stTaskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE; //任務堆棧大小 9 stTaskInitParam.pcName = "ApiDemo"; //任務名字 10 stTaskInitParam.usTaskPrio = 30; /、任務優先級 11 uwRet = LOS_TaskCreate(&g_uwDemoTaskID, &stTaskInitParam); //創建任務 12 13 if (uwRet != LOS_OK) 14 { 15 dprintf("Api demo test task create failed\n"); 16 return; 17 } 18 return; 19 }
5. 其中和任務相關的函數,主要是這些
1 //創建一個任務,但是先阻塞不運行 2 UINT32 LOS_TaskCreateOnly (UINT32 *puwTaskID, TSK_INIT_PARAM_S *pstInitParam) 3 4 //創建一個任務 5 UINT32 LOS_TaskCreate (UINT32 *puwTaskID, TSK_INIT_PARAM_S *pstInitParam) 6 7 //恢復一個任務 8 UINT32 LOS_TaskResume (UINT32 uwTaskID) 9 10 //阻塞一個任務 11 UINT32 LOS_TaskSuspend (UINT32 uwTaskID) 12 13 //刪除一個任務 14 UINT32 LOS_TaskDelete (UINT32 uwTaskID) 15 16 //延時一個任務 17 UINT32 LOS_TaskDelay (UINT32 uwTick) 18 19 //鎖定任務,應該是暫停任務調度 20 VOID LOS_TaskLock (VOID) 21 22 //解鎖任務,恢復任務調度 23 VOID LOS_TaskUnlock (VOID) 24 25 //設定任務優先級 26 UINT32 LOS_TaskPriSet (UINT32 uwTaskID, UINT16 usTaskPrio) 27 28 //設定當前運行任務的優先級 29 UINT32 LOS_CurTaskPriSet (UINT16 usTaskPrio) 30 31 //進行一次任務切換 32 UINT32 LOS_TaskYield (VOID) 33 34 //獲取任務優先級 35 UINT16 LOS_TaskPriGet (UINT32 uwTaskID) 36 37 //獲取當前任務的ID號 38 UINT32 LOS_CurTaskIDGet (VOID)