UCOSIII任务挂起和恢复

摘要:
UCOSIII任务挂起和恢复有时候在某个时间段内我们不需要某个任务继续运行,这时,我们可以将它挂起,但是,过了这个时间段后又需要它继续运行,这时,我们可以将它恢复;小理解点:理论上不需要时将任务删除,需要时再重新创建,这样也行,但是太麻烦。。。。

UCOSIII任务挂起和恢复

有时候在某个时间段内我们不需要某个任务继续运行,这时,我们可以将它挂起,但是,过了这个时间段后又需要它继续运行,这时,我们可以将它恢复;

小理解点:理论上不需要时将任务删除,需要时再重新创建,这样也行,但是太麻烦。。。。

UCOSIII任务挂起函数:

void OSTaskSuspend (OS_TCB *p_tcb,OS_ERR *p_err);

参数一 “*p_tcb”:被挂起任务的任务控制块;

参数二 “*p_err”:错误码,不同错误码有不同的含义,具体见UCOSIII源代码中这个函数原型那里,那里有详细注释;

函数原型所在位置:UCOSIII源码中,“os_task.c”的大概第1737行;

小知识点:空闲任务不能挂起,如果试图挂起一个空闲任务,这个函数返回值会为:“OS_ERR_TASK_SUSPEND_INT_HANDLER”,这一点在上面说的函数原型所在位置中关于函数返回值的说明那里有详细说明;再有,....同上....,系统任务也不能挂起,比如系统中断服务任务也不能挂起;

UCOSIII任务恢复函数:

void OSTaskResume(OS_TCB *p_tcb,OS_ERR *p_err);

参数一:“*p_tcb”:被挂起任务的任务控制块

参数二:“*p_err”:错误码,.........同上.........同上...........

函数原型所在位置:UCOSIII源码中,“os_task.c”的大概第1175行;

小知识点:基本同上........同上.........同上.......同上.........没事多看看源码就知道了

例程:这个例程和前面那篇《UCOSIII任务创建》中的例程基本一样,下面给出不一样的地方:

1 //"Led0_task"任务:
2 void Led0_task(void *p_arg)
3 {
4 OS_ERR err;
5     static char i=0;
6     p_arg = p_arg;          //故意使用一下这个参数,否则编译器会警告说此参数没有使用
7     while(1)
8 {
9         LED0=~LED0;
10         OSTimeDlyHMSM(0,0,0,300,OS_OPT_TIME_HMSM_STRICT,&err);
11         i++;
12         if(i==15)//上面定义了一个静态变量,当i加到15就将“Led1_task”任务挂起
13 {
14             OSTaskSuspend((OS_TCB*)&Led1TaskTCB,&err);//任务挂起函数
15             printf("挂起了"Led1_task"任务
");
16 }
17         if(i==25)//当i加到25,再将“Led1_task”任务恢复,这样,任务的挂起和恢复就测试完了
18 {
19             OSTaskResume((OS_TCB*)&Led1TaskTCB,&err);//任务恢复函数
20             printf("恢复了"Led1_task"任务
");
21 }
22 }
23 }

在上边我们可以看出,任务的挂起和恢复就是在“Led0_task”这个任务中完成的,通过定义一个变量“i”,任务一每次将“i”加1,在 i 等于15和25处分别将“Led1_task”任务挂起和恢复,那么任务现象自然就是,“Led1_task”任务本来是正常执行的,当“i”等于15时,暂停执行了,当“i”等于25时恢复执行了。

免责声明:文章转载自《UCOSIII任务挂起和恢复》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jsp弹出新窗口代码LeetCode--045--跳跃游戏II(java)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

微信小程序----返回上一页刷新或当前页刷新

1.Reload()方法刷新当前页面;2.replace()方法刷新当前页面;3.页面自动刷新当前页面;实现js刷新当前页面的三种方法使用微信小程序--返回上一页刷新或当前页面刷新1.在实现效果之前,您需要了解微信小应用程序的页面生命周期。如果你不太清楚,你可以看到微信小程序——页面生命周期;2.我们可以知道微信小程序页面由五个循环组成:onLoad、onR...

01 . 美团全链路监控CAT简介及部署

现任携程架构总监)领导基于Java开发的实时应用程序监控平台的设计。作为大众点评网的基本监控组件,AT为大众点评网业务线提供系统的性能指标、健康状态、基本警报等。如何有效定位故障并缩短故障。。。监控是运维工作中最重要的环节,吴启民也是开源实时监控系统CAT的作者。系统故障监控、业务指标监控、应用程序性能监控、用户行为监控、安全合规性监控等,如分布式监控系统C...

C# Task详解

1.任务线程池的优点与线程相比有很多优点,但线程池不方便使用。例如:◆ ThreadPool不支持线程取消、完成和失败通知等交互操作;◆ ThreadPool不支持线程执行顺序;在过去,如果开发人员想要实现上述功能,他们需要完成大量额外的工作。现在,FCL提供了一个更强大的概念:任务。任务基于线程池执行...

解决fiddler开启后打开浏览器提示无法访问网络

在使用python接口测试的过程中,jupyter经常被用来调试python代码。因为jupyter的默认代理端口是8888,所以当它启用时,它会打开fiddler数据包捕获并打开浏览器,提示“无法访问网络”。这个问题主要是由港口冲突造成的。您可以在工具选项连接中修改端口号,修改它,然后单击“确定”重新启动fiddler...

log4j简介及应用

我们可以控制日志信息传输的目的地是控制台、文件、GUI组件,甚至是套接字服务器、NT事件记录器、UNIX Syslog守护程序等;日志信息的输出格式。日志信息的输出目的地指定将日志打印到控制台还是文件;输出格式控制日志信息的显示。...

查看IPA安装包文件信息工具

通常情况下,我们需要查看IPA文件中的一些信息,例如APP的名称、BundleID、版本,以及签名描述文件的名称和到期时间。这里给大家介绍一款非常好用和方便的查看软件:InfoPreview,基于Mac电脑的,只需要拖入IPA文件到软件即可查看。...