1.1、写好任务创建所需的优先级,任务堆栈大小,任务控制块并声明任务函数。
//任务优先级
#define START_TASK_PRIO 3
//任务堆栈大小
#define START_STK_SIZE 512
//任务控制块
OS_TCB StartTaskTCB;
//任务堆栈
CPU_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *p_arg);
1.2、任务的创建:
UCOSIII中要想使用任务,第一件事就是创建一个任务,创建任务使用函数OSTaskCreate()。
void OSTaskCreate ( OS_TCB *p_tcb,
CPU_CHAR *p_name,
OS_TASK_PTR p_task,
void *p_arg,
OS_PRIO prio,
CPU_STK *p_stk_base,
CPU_STK_SIZE stk_limit,
CPU_STK_SIZE stk_size,
OS_MSG_QTY q_size,
OS_TICK time_quanta,
void *p_ext,
OS_OPT opt,
OS_ERR *p_err)
1.3、任务的删除:
如果我们不想使用某个任务了就可将其删除,删除任务使用函数OSTaskDel(),函数原型如下:
void OSTaskDel (OS_TCB *p_tcb, OS_ERR *p_err)
1、删除某个任务以后,它占用的OS_TCB和堆栈就可以再次利用来创建其他的任务。
2、尽管UCOSIII允许在系统运行中删除任务,但是应该尽量避免这种操作,如果这个任务可能占有与其他任务共享的资源,在删除此任务之前这个被占有的资源没有被释放就有可能出现程序异常。