UCOSⅢ学习总结2:OSInit()

OS 系统初始化一般是在硬件初始化完成之后来做的,主要做的工作就是初始化uC/OS-III 中定义的全局变量。

void OSInit (OS_ERR *p_err)—>void OS_RdyListInit(void)

void OSInit (OS_ERR *p_err){
	/*系统用一个全局变量 OSRunning 来指示系统的运行状态,刚开始系统初始化的时候,默认为停止状态,即OS_STATE_OS_STOPPED。*/
	OSRunning =  OS_STATE_OS_STOPPED;
	/*全局变量 OSTCBCurPtr 是系统用于指向当前正在运行的任务的TCB 指针,在任务切换的时候用得到。*/
	OSTCBCurPtr = (OS_TCB *)0;
	/*全局变量 OSTCBHighRdyPtr 用于指向就绪任务中优先级最高的任务的 TCB,在任务切换的时候用得到。*/
	OSTCBHighRdyPtr = (OS_TCB *)0;	
	/*OS_RdyListInit()用于初始化全局变量 OSRdyList[], 即初始化就绪列表。*/ 
	OS_RdyListInit();	 //(1)
	*p_err = OS_ERR_NONE;   //代码运行到这里表示没有错误,即 OS_ERR_NONE。
}

/*  OS_RdyListInit() 就绪列表初始化 */
void OS_RdyListInit(void)
{
	OS_PRIO i;   //typedef CPU_INT08U  OS_PRIO;  优先级变量
	OS_RDY_LIST *p_rdy_list;
	for( i=0u; i<OS_CFG_PRIO_MAX; i++ ) {
		p_rdy_list = &OSRdyList[i];    
		p_rdy_list->HeadPtr = (OS_TCB *)0;  //指向下一个BCT块
		p_rdy_list->TailPtr = (OS_TCB *)0;  //指向上一个BCT块
	}
}

你可能感兴趣的:(UCOSⅢ学习总结2:OSInit())