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=

随便看看

iOS开发之关闭暗黑模式

对于许多不想适应黑暗模式或没有时间适应的应用程序,可以关闭黑暗模式。全局关闭暗模式:在“信息”中。plist文件,将键添加为UserInterfaceStyle,类型添加为String,值添加为Light。...

HP服务器设置iLO

HP Server Setting iLO Step 1.开机后出现界面-按F11进入BootMenu;2.选择GenericUSBBoot并输入;3.选择SystemConfiguration(系统配置)并按Enter键;4.选择iLO4ConfigurationUtility进入;5.选择NetworkOptions Enter将DHCPEnable设置...

office 2016 专业版 删除部分组件

删除Office2016 Professional Edition####1中的一些组件。打开控制面板。2.单击此选项。3.找到Office2016并右键单击以选择更改。4.选择并确认。5.选择要删除的组件(以Access为例)。6.单击此处。7.单击“继续”。8.等等。9.完成此方法并不是真正删除模块。这意味着模块已禁用。如果您想在将来重新启用它,请重复前...

关于ArcMap中的地图文档单位

在ArcMap中地图文档的单位有度分秒、千米、米、十进制等很多种,但是ArcMap中的测量距离功能的实现必须建立在图层框架具有投影坐标系的情况下才能进行正确的计算,否则是不能进行的,IPolyline的Lenth属性获取的单位为十进制,需要转换成米。...

从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法

具体下载地址:HTTP://www.microsoft.com/downloads/details.aspxFAMILYID=c06b8369-60dd-4b64-A44B-84b371ede16d&displayLang=ZH-CN对于一些早期用户,如果连接字符串中使用的是“Microsoft.Jet.OLEDB.4.0”,由于喷气项目已经停止,该项目不再...

Fiddler断点应用

对于不需要修改的报文,我们可以手动完成发送,fiddler会把拦截的网页发送到服务器或者客户端,需要修改的报文,可以在Fiddler修改完成后,再选择转发。另外,我们也可以使用Fiddler的断点功能模拟网络中断场景,验证服务器超时,客户端的处理情况。Afterresponses:服务器响应之后,在fiddler将响应传回给客户端之前。...