1.最近项目遇到华为的LiteOS小型操作系统,使用学习
2. 先打开一个工程LiteOS_Kernel-masterprojectsLPC824_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 "); 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)