此篇博文主要讲述UCOSIII的任务管理功能。
多任务操作系统最主要的就是对任务的管理,包括任务的创建、挂起、删除和调度等。关于UCOSIII任务的创建、挂起、删除和调度可以查看本人另一篇博文。
一、UCOSIII的启动和初始化
将UCOSIII移植到工程之后,就可以启动UCOSIII了,在使用UCOSIII的时候我们需要按照一定的顺序初始化并打开UCOSIII,顺序如下:
- 第一步,是调用CPU_Init()初始化UCOSIII
- 第二步,创建任务
一般情况下,我们在main函数里只创建一个start_task()任务,其它的任务都在start_task()中创建,创建任务的函数是OSTaskCreate()函数。
注意在调用OSTaskCreate()函数创建任务的时候,一定要调用OS_CRITICAL_ENTER()函数进入临界区,任务创建以后,要调用OS_CRITICAL_EXIT()函数退出临界区。 第三步,调用OSStart()函数来开启UCOSIII
下面是一个例子:
OSInit(&err); //初始化UCOSIII
OS_CRITICAL_ENTER();//进入临界区
//创建开始任务
OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块
(CPU_CHAR * )"start task", //任务名字
(OS_TASK_PTR )start_task, //任务函数
(void * )0, //传递给任务函数的参数
(OS_PRIO )START_TASK_PRIO, //任务优先级
(CPU_STK * )&START_TASK_STK[0],