锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2023-09-16 22:37:01 二极管dflt48a

目录

任务挂起

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

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

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

相关文章