uc/OSIII 任务使用
2017-01-12 16:51
323 查看
任务的组成 |
任务控制块:保存任务的各个属性
任务函数:完成指定功能
API接口 |
Tables | Are |
---|---|
OSTaskCreate | 创建任务 |
OSTaskSuspend | 任务挂起 |
OSTaskResume | 任务恢复 |
OSSchedRoundRobinCfg | 时间片配置 |
OSSchedRoundRobinYield | 放弃时间片 |
任务创建 |
//任务优先级 #define TASK2_TASK_PRIO 4 //任务堆栈大小 #define TASK2_STK_SIZE 128 //任务控制块 OS_TCB Task2_TaskTCB; //任务堆栈 CPU_STK TASK2_TASK_STK[TASK2_STK_SIZE]; //任务函数 void task2_task(void *p_arg); CPU_SR_ALLOC(); ... OS_CRITICAL_ENTER(); //进入临界区 //任务创建 OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块 (CPU_CHAR * )"start task", //任务名称 (OS_TASK_PTR )start_task, //任务函数 (void * )0, //任务函数的参数,一般不用,这里直接设置为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, //内建消息队列长度 (OS_TICK )0, //时间片长度(单位时钟节拍)。0:表示为默认值。为OS_CFG_TICK_RATE 200u/10.为20个节拍,也就是100ms (void * )0, //用户补充的存储区,用于扩展PCB,一般不用。 (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //选择检查和清除STK功能(SAVE_FP浮点处理的,不用管,移植的时候已经处理) (OS_ERR * )&err); //错误信息 OS_CRITICAL_EXIT(); //退出临界区
注:
记得在创建任务的时候要进入临界区。并且进入临界区之前,要调用
CPU_SR_ALLOC();
在没有使用时间片轮转的时候,任何任务的优先级不能相同
第一个任务创建和初始化需要注意顺序
任务删除 |
void OSTaskDel (OS_TCB *p_tcb, //需要删除的PCB OS_ERR *p_err) //错误信息
任务挂起 |
void OSTaskSuspend (OS_TCB *p_tcb, OS_ERR *p_err) ``` ##任务恢复 ``` void OSTaskResume (OS_TCB *p_tcb, OS_ERR *p_err)
时间片轮转 |
使能
OS_CFG_SCHED_ROUND_ROBIN_EN 宏置为一调用OSSchedRoundRobinCfg 进行配置
void OSSchedRoundRobinCfg (CPU_BOOLEAN en, //两个之间多少时钟节拍,0:为默认的OS_CFG_TICK_RATE/10 OS_TICK dflt_time_quanta, OS_ERR *p_err);
放弃时间片
void OSSchedRoundRobinYield (OS_ERR *p_err)
相关文章推荐
- uC/OS-III的任务调度算法研究
- 【iCore3 双核心板_ uC/OS-III】例程九:任务信号量
- uC/OS-III之任务调度总结
- uC/OS-III统计任务堆栈、CPU使用率
- 使用UC/OS-II创建任务出错
- uc/os-III任务管理总结
- uC/OS-III之任务切换学习总结
- uC/OS-III任务创建函数OSTaskCreate()
- uC/OS-III之任务同步
- 【iCore3 双核心板_ uC/OS-III】例程三:任务的挂起与恢复
- uc/os-iii学习笔记-任务挂起表
- uc/os-iii学习笔记-任务切换
- uC/OS-III之任务挂起表
- uC/OSIII在Cortex-M3的任务切换和中断退出分析
- 【iCore3 双核心板_ uC/OS-III】例程七:信号量——任务同步
- 【iCore3 双核心板_ uC/OS-III】例程十一:任务消息队列
- uc/os-iii学习笔记-任务调度
- uC/OSIII 任务管理与任务切换
- uC/OS-III之任务就绪表学习总结
- uC/OS iii(三)任务管理之任务状态