1.空闲任务OS_IdleTaskInit(p_err); os_core.c中
系统在初始化过程中,会先创建一个空闲任务,在创建空闲任务时先初始化任务控制块和链表,然后进行优先级和就绪链表插入操作(OS_PrioInsert和OS_RdyListInsertTail),同时将任务计数加一(OSTaskQty++; ),最后调用OSSched()函数。
这个任务几乎不做什么事情,只是把OSIdleTaskCtr
和OSStatTaskCtr
进行自加操作,这两个变量都是用来调试和统计任务统计的,以保证CPU始终处于运行状态。
创建任务的标准流程:初始化任务控制块——插入优先级链表——插入就绪链表——任务计数加1——调用OSSched()。
2.时钟节拍任务OS_TickTaskInit(p_err); os_tick.c中,优先级为2u
流程同上。
节拍任务的具体函数如下:
可以看到,函数处于for的死循环中,并且调用 <