STM32——UCOSIII挂起恢复与时间轮转
时间:2023-09-16 22:37:01
目录
任务挂起
OSTaskSuspend()函数
任务恢复
OSTaskResume()函数
任务时间轮转
OSSchedRoundRobinCfg()函数
任务挂起
OSTaskSuspend()函数
作用:因某些原因暂停运行,但以后还是要运行,用这个函数挂起来
位置:os_task.c
调用:
void OSTaskSuspend(OS_TCB *p_tcb,///可以通过挂起指定的控制块NULL挂起自身 OS_ERR *p_err ///保存函数的错误码)
悬挂指定任务块
OSTaskSuspend((OS_TCB*)&Task2_TaskTCB,&err);
挂起自身
OSTaskSuspend((OS_TCB*)0,&err);
任务恢复
OSTaskResume()函数
作用:恢复悬挂任务
位置:os_task.c
调用:
void OSTaskResume(OS_TCB *p_tcb,///恢复指定控制块NULL恢复自身 OS_ERR *p_err ///保存函数的错误码)
恢复指定任务块:
OSTaskResume((OS_TCB*)&Task2_TaskTCB,&err);
恢复自身:
OSTaskResume((OS_TCB*)0,&err);
轮换任务时间
OSSchedRoundRobinCfg()函数
前提:OS_CFG_SCHED_ROUND_ROBIN_EN 置1 使用时间轮转
作用:设置时间片长度
位置:os_core.c
调用:
void OSSchedRoundRobinCfg (CPU_BOOLEAN en,//DEF_ENABLED 打开 关闭DEF_DISENABLED OS_TICK dflt_time_quanta,//设置时间片长度 n*5 ms OS_ERR *p_err ///返回的错码)
使用实例:
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
注:还需要在创建任务函数中写入几个时间片,以实现某个函数执行的有效时间