资讯详情

STM32——UCOSIII挂起恢复与时间轮转

任务挂起

OSTaskSuspend()函数

任务恢复

OSTaskResume()函数

任务时间轮转

OSSchedRoundRobinCfg()函数


因某些原因暂停运行,但以后还是要运行,用这个函数挂起来

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);

恢复悬挂任务

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);

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); 

注:还需要在创建任务函数中写入几个时间片,以实现某个函数执行的有效时间

标签: 二极管dflt48a

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台