ucos-ii使用OSTaskCreate()和OSTaskCreateExt()来创建新任务。
OSTaskCreate()函数声明如下:
INT8U OSTaskCreate(void(*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio);
参数说明:
参数及类型 | 解释 |
---|---|
void(*task)(void *p_arg) | task是一个指向函数的指针,即任务执行函数代码。 |
void *p_arg | 传递给task指向函数的参数。 |
OS_STK *ptos | 任务栈顶指针。 |
INT8U prio | 任务优先级。 |
OSTaskCreate()函数声明如下:
INT8U OSTaskCreateExt (void (*task)(void *p_arg),
void *p_arg,
OS_STK *ptos,
INT8U prio,
INT16U id,
OS_STK *pbos,
INT32U stk_size,
void *pext,
INT16U opt);
参数说明:
参数及类型 | 解释 |
---|---|
void (*task)(void *p_arg) | 指向任务代码的指针 |
void *p_arg | 任务函数参数 |
OS_STK *ptos | 指向被分配给该任务的栈顶指针 |
INT8U prio | 任务优先级 |
INT16U id | 任务ID值 |
OS_STK *pbos | 任务栈底指针 |
INT32U stk_size | 任务栈的单元大小 |
void *pext | 任务控制块扩展部分数据的位置 |
INT16U opt | 任务栈空间初始化选项 |
ucos-ii允许某个任务删除另一个任务,也可删除自己。被删除后,该任务将进入休眠。
OSTaskDel()函数声明如下:
INT8U OSTaskDel(INT8U *prio)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | 将被删除任务的优先级。 |
OSTaskDelReq()函数并不是直接执行删除操作,而是示意该任务在后续执行时释放申请的资源,然后删除自己。其声明如下:
INT8U OSTaskDelReq(INT8U prio)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | 将被删除任务的优先级。 |
示例代码:
void Task(void *p_arg)
{
while(1)
{
OSTimeDly(1);
if(OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) //检测是否为删除标识
{
//释放资源
...
OSTaskDel(OS_PRIO_SELF);
}
... //任务代码
}
}
OSTaskSuspend函数用来挂起一个指定优先级的任务。此函数是调用它的任务暂停执行,直到其他任务调用OSTaskResume()函数才恢复其就绪状态。其声明如下:
INT8U OSTaskSuspend(INT8U prio)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | prio用来以优先级值指定任务,如果欲挂起自己,则可设置优先级为OS_PRIO_SELF。 |
OSTaskResume()函数用来恢复一个被函数OSTaskSuspend()挂起的任务,使其处于就绪状态。其声明如下:
OSTaskResume(INT8U prio)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | 欲恢复任务的优先级。 |
OSTaskNameSet()函数用来设置任务的名称。声明如下:
void OSTaskNameSet(INT8U prio, INT8U *pname, INT8U *err)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | 欲修改名字任务的优先级,标识该任务。 |
INT8U *pname | 指向欲设置的任务的名称字符串。 |
INT8U *err | 存储返回值。 |
OSTaskNameGet()函数用来获取任务名称,声明如下:
void OSTaskNameGet(INT8U prio, INT8U *pname, INT8U *err)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U *prio | 欲获取名字任务的优先级,标识该任务。 |
INT8U *pname | 任务名称字符串存储位置。 |
INT8U *err | 存储返回值。 |
OSTaskQuery()函数用来在任务TCB中查询任务当前TCB信息。声明如下:
INT8U OSTsakQuery(INT8U prio, OS_TCB *p_task_data)
参数说明:
参数及类型 | 解释 |
---|---|
INT8U prio | 使用优先级来标识欲读取信息的任务。 |
OS_TCB *p_task_data | 存储任务TCB信息的临时空间。 |