其中OSTaskCreate()用来创建ucos中的线程,OSStart()用来启动线程,现在启动之后,线程的调度由操作系统来完成。 3:ucos中的优先级
在系统当有多个并发任务需要同时运行的时候,操作系统必须从并发的多个任务中选取一个运行,在ucos中,使用优先级的方式,即对通过OSTaskCreate()创建的每一个task分配一个唯一的优先级来标识任务的重要程度。现在ucso中支持256的任务,ucos中任务的优先级用一个数据来标识,数字越小表示任务的优先级越高。系统通过
#define OS_LOWEST_PRIO 31 /* Defines the lowest priority that can be assigned ... */定义最小优先级。
#define OS_MAX_TASKS 20 /* Max. number of tasks in your application, MUST be >= 2 */定义了系统最多任务的个数。 4:ucos任务堆栈 所谓堆栈就是在寄存器中按照数据的“后进先出”的原则组织的连续存储空间。用来在任务进行切换或者中断的时候保存CPU寄存器中的内容。ucso中每一个任务的任务控制块中都有一个指向其任务堆栈的指针。
ucso中定义了宏变量
typedef unsigned int OS_STK; /* Each stack entry is 32-bit wide */
比如一个任务为自己定义的堆栈大小为:static OS_STK TcpServerStack[TCPMULTISERVER_STK_SIZE];
此处定义的任务堆栈数据将传入OSTaskCreate()函数中,需要注意不同的CPU有不同栈增长方式。