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=

随便看看

如何开发一款浏览器[转]

另一个问题是“开发浏览器有什么困难?”,范围不限于PC或移动浏览器。从这个角度来看,开发浏览器并不容易。有很多种类的知识和困难需要处理,但如此多的努力将得到相应的回报。InfoQ的读者们,您是否也考虑过开发浏览器?你对如何开发浏览器有什么看法?...

PHP是怎么运行的

严格来说,与PHP相关的过程不需要手动启动。它们与Apache启动一起运行。当然,如果需要重新启动PHP服务,可以手动重新启动PHP。最后,它被移交给PHP内核的ZendEngine进行顺序执行。PHP在开始执行后将经历两个主要阶段:处理请求之前的开始阶段和请求之后的结束阶段。PHP的结束阶段分为两个阶段:禁用模块和关闭模块。...

HTML5表单之input 类型- Date Pickers(日期选择器)

HTML5有几种新的输入类型用于选择日期和时间:日期:选择日期、月份、年份月份:选择月份、年份星期:选择星期和年份时间:选择时间datetime local:选择时间、日期、月份和年份datetime:选择时间、,年示例1:日期示例2:月示例3:周示例4:时间˂inputtype=“time”name=“tart_time”value=“”//示例5:dat...

Innodb_large_prefix

但是,索引列的总长度不能超过3072字节的限制仍然存在...

一起学习Avalonia(十二)

可以使用数据模板自定义和显示数据模板模板。文档中介绍了Avalonia的基本数据模板。PublicstringFirstName{get;set;}publicstringLastName{get;set;}扩展使用文档最后介绍了扩展使用,包括2个模型。Student和Teacher。在MainWindowViewModel中创建属性Content。此属性是...