UCOS-III 任务相关API函数调用

2017-03-19  本文已影响0人  老田2314

任务创建和删除函数

OSTaskCreate()函数

//任务优先级

#define START_TASK_PRIO 3

//任务堆栈大小

#define START_STK_SIZE 128

//任务控制块

OS_TCB StartTaskTCB;

//任务堆栈

CPU_STK START_TASK_STK[START_STK_SIZE];

//任务函数

void start_task(void *p_arg);

使用例子

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], //任务堆栈基地址

(CPU_STK_SIZE)START_STK_SIZE/10, //任务堆栈深度限位

(CPU_STK_SIZE)START_STK_SIZE, //任务堆栈大小

(OS_MSG_QTY  )0, //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息

(OS_TICK   )0, //当使能时间片轮转时的时间片长度,为0时为默认长度,

(void  * )0, //用户补充的存储区

(OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项

(OS_ERR * )&err); //存放该函数错误时的返回值

OSTaskDel((OS_TCB*)&Task2_task,&err);//删除任务


任务挂起和恢复实验

挂起任务2

OSTaskSuspend((OS_TCB*)&Task2_TaskTCB,&err);

恢复任务2

OSTaskResume((OS_TCB*)&Task2_TaskTCB,&err);

注意:挂起不是删除


时间片轮转调度

设置任务的优先级一致 时间片的长度为一个5ms 默认为0 在使用时间片轮转时需要调整数值
上一篇下一篇

猜你喜欢

热点阅读