OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15236|回复: 45

ucosii 三个以上任务时切换的问题

[复制链接]

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
发表于 2013-1-29 21:16:08 | 显示全部楼层 |阅读模式
当OSIntNesting==0&&调度器未上锁&&就绪表最高优先级任务!=被中断的任务优先级时,就会调度这个最优先级的任务。
如果系统中有三个任务,优先级为5,6,7。当系统开始运行时,会先执行5,再调用到6,当执行完6后会产生一次切换,但此时5和7当中,5是最高优先级的,这样推理是会执行5的,而7一直没被执行,当然这是错误的了。所以想知道这三任务会是如何切换的,请教
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-4-9
在线时间
76 小时
发表于 2015-8-3 12:20:16 | 显示全部楼层
楼主我给你解释下吧,听好了,哈哈哈哈
任务必须调用某个系统函数:
因为UCOS-II是完全基于优先级的操作系统,所以在一定的条件下必须出让CPU占有权以便比自己优先级更低的任务能够运行,这是通过调用部分系统函数来实现的,这些函数如下:OSFlagPend、OSMutexPend、OSQPend、OSSemPend、OSTaskPend、OSTaskSuspend、OSTimeDly、OSTimeDlyHMSM;一般的任务必须调用其中的至少一个函数,只有一种情况例外,就是单次执行的任务,因为任务删除后肯定让出CPU,所以可以不调用上述函数。比如原子哥历程里面Task_Start,函数结束 OSTaskDel((OS_TCB*)0,&err); 删除start_task任务自身,就不需要调用系统函数。
懂了啊?不懂再问O(∩_∩)O哈哈~
签名必须手写!
回复 支持 0 反对 1

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-1-29 22:29:52 | 显示全部楼层
楼主可以参考操作系统书籍中讲调度算法的章节和UCOS的文档
高优先级的任务直接让低优先级的任务不执行,在一些算法中确实是这样处理的。不同的算法处理方式不同,UCOS用的是哪一类我就不清楚了。
https://github.com/roxma
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2013-1-29 22:35:04 | 显示全部楼层
回复【2楼】Pony279:
---------------------------------
跟代码跟得痛苦
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-1-29 22:37:52 | 显示全部楼层
一般没必要直接读代码吧,UCOS这么多人用的东西,完善的文档是必须的,上官网去找找吧。
https://github.com/roxma
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-1-30 08:43:37 | 显示全部楼层
回复【3楼】daiqh:
---------------------------------
根据CPU分配情况来定,如果高优先级占用CPU实在太多,低优先级则没法被运行(或者运行不流畅),为了使低优先级有运行的机会,则在高优先级增加延时函数。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-30 10:37:26 | 显示全部楼层
回复【楼主位】daiqh:
---------------------------------
通过延时实现的.
如果高优先级的任务没有延时,低优先级的任务就都得不到运行!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2013-1-30 12:11:13 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
当执行5进入延时,切换到6,5挂起。而当执行6时,进入延时进行切换任务时,此时5还处于挂起状态,所以7得以运行。这样理解可以吧
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-30 17:18:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-14 21:38:10 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------我同时使用MP3模块,64*128点阵,CPU好像运转不过来,我调试的结论是:谁优先级高,就执行谁,另外一个完全不动。有什么法子?是因为没延时吗?加延时好像也不管用,还是CPU使用率太高了?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-14 22:20:26 | 显示全部楼层
回复【9楼】qq910876301:
---------------------------------
不加延时,当然没法运行了...
一定要有延时/主动释放CPU使用权的操作。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-23 10:34:43 | 显示全部楼层
mp3能允许多大间隔?我都释放了好几个ms,我释放的MP3一卡一卡的,点阵还是没反应。。。。痛苦啊
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-23 23:35:50 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
mp3能允许多大间隔?我都释放了好几个ms,我释放的MP3一卡一卡的,点阵还是没反应。。。。痛苦啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-24 00:19:30 | 显示全部楼层
我的5ms,没出现卡机的情况.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-24 14:37:31 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
103RBT6    可以延时5ms吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-24 14:45:41 | 显示全部楼层
当然可以
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1815
金钱
1815
注册时间
2011-10-9
在线时间
230 小时
发表于 2013-3-25 23:39:00 | 显示全部楼层
我没研究过os 不过按照看原子的os介绍

其实多任务就是利用 任务需要延迟的时候运行其他任务

so 如果你的高级任务没有任何延迟 那么就是cpu一直忙 其他任务可能完成

不知道理解是否正确。





回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-27 19:51:48 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
你有没有lrc歌词从读取,保存,到显示出来的资料?战舰里对lrc的操作  只字未提吖。。。。。。不知道怎么搞好,网上找了好多,作用不大,都没说出重点,原子哥,你能上传一点资料吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-27 21:00:23 | 显示全部楼层
战舰板的综合实验,有时候看看源码也不错啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2012-11-8
在线时间
19 小时
发表于 2013-3-27 21:44:08 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
跳跃的太厉害了,思维更不上。。。。      你推荐一下,以前看过那些,我也去看看。。。。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
发表于 2013-9-1 13:11:17 | 显示全部楼层
回复【7楼】daiqh:
---------------------------------
        对于楼主的问题 我也相当的痛苦,不知楼主搞明白没?如果是“当执行5进入延时,切换到6,5挂起。而当执行6时,进入延时进行切换任务时,此时5还处于挂起状态,所以7得以运行”这样的话,那就是说任务5里的延时必须足够长,以保证“当执行6时,进入延时进行切换任务时,此时5还处于挂起状态”。是这样的吗??
     换句话就是:最高优先级任务里的延时时间必须能保证让所有任务都能得到一次执行的机会,否则就有低优先级的任务得不到执行的可能性!!不知我的理解是否正确呢??但如果是这样的话,假如任务数很多的话,那最高优先级任务的实时性不是得不到保证吗??急需解答。
     针对图片里的问题 有高人能具体回答下吗?链接为:http://www.docin.com/p-642880674.html
如果有三个任务 其优先级各不相同 是否最低优先级别的任务始终得不到执行?



乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-12-22
在线时间
17 小时
发表于 2014-3-19 16:37:07 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
那各个任务之间的延时时间长短如何确定呢,如果任务多于3个,为了让低优先级的任务得到执行,是不是得算好每个任务大概得延时多久?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-19 18:32:54 | 显示全部楼层
回复【21楼】天空的枫度:
---------------------------------
只要你延时超过1个系统时钟节拍,UCOSII就会执行任务切换,不需要计算每个任务延时多久,只要你保证延时大于一个系统时钟节拍,就可以了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-12-22
在线时间
17 小时
发表于 2014-3-19 20:07:58 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
原子哥,请教一下:本来是应该由KEY0按键触发的一个任务,却在系统上电或者复位时便会执行一次,这是为什么呢?其中按键任务的优先级高于该任务。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-19 22:54:24 | 显示全部楼层
回复【23楼】天空的枫度:
---------------------------------
你的任务怎么做的?代码呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-12-22
在线时间
17 小时
发表于 2014-3-20 13:56:37 | 显示全部楼层
我是在战舰开发板信号量和邮箱那一章的基础上建立了XY1脉冲产生任务和XY2脉冲产生任务,这两个任务在分别获得KEY0,KEY2发送的信号量后会执行。除了上电或者复位时XY2任务自动执行一次外(感觉就是执行了一次KEY2按键的功能),之后LED任务,XY1和XY2任务均正常,这是什么原因呢?代码添加在附件中了,麻烦原子了,不胜感激!

嵌入式练习.rar

4.38 MB, 下载次数: 472

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-20 17:26:25 | 显示全部楼层
问题出在这里:
void start_task(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
pdata = pdata;    
msg_key=OSMboxCreate((void*)0); //创建消息邮箱
sem_XY1=OSSemCreate(0); //创建信号量
  sem_XY2=OSSemCreate(1);

  sem_XY2=OSSemCreate(1);改为  sem_XY2=OSSemCreate(0);就好了。

因为你创建的时候,就给信号量赋值1了,说明有1个信号量,自然XY2就可以得到一次运行机会。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-7-6
在线时间
10 小时
发表于 2015-1-25 21:56:04 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
以此话题中的5,6,7为例,如果延时大于1个时钟节拍,是否一定能执行最低优先级的任务呢?执行完5后,5延时挂起,此时6执行,6执行完后,5的延时已到,这样7还能执行吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-26 00:41:02 | 显示全部楼层
回复【27楼】ghqiloveu:
---------------------------------
你可以写代码自己测试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-7-6
在线时间
10 小时
发表于 2015-1-27 09:39:04 | 显示全部楼层
回复【28楼】正点原子:
---------------------------------
原子哥,说的是自己测试执行每个任务的时间,然后根据执行任务的时间,决定延时的时间吗?如果任务5执行需要2ms,任务6需要5ms,任务7需要9ms,这个延时该如何设置呢?才能保证3个任务都能可靠运行,不会导致由于时间设置问题,导致有的任务一直处于挂起状态;
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-28 00:12:49 | 显示全部楼层
回复【29楼】ghqiloveu:
---------------------------------
确保延时必须大于7ms,才可以保证任何时候,任务7都能获得运行的机会.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-7-6
在线时间
10 小时
发表于 2015-1-28 18:00:56 | 显示全部楼层
回复【30楼】正点原子:
---------------------------------
请教原子哥,一个关于串口的问题,我用串口1发送数据时,我想要发送01,03,0e,A6,0,05,92,02,但是实际发送的时候,实际发送的却是ff,01,03,0e,A6,0,05,92,02或者00,ff,01,03,0e,A6,0,05,92,02,请问这是怎么回事啊?我是利用的串口中断收发数据
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-29 00:04:48 | 显示全部楼层
回复【31楼】ghqiloveu:
---------------------------------
你直接用我们的例程试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-12-2
在线时间
21 小时
发表于 2015-7-13 17:38:00 | 显示全部楼层
回复【30楼】正点原子:
---------------------------------
原子哥,调用UCOSIII的延迟函数,就要把调用该函数的任务从就绪任务表中删除,如果我的调度全部是用延迟函数来调度,那么所有的任务都删除,UCOSIII中怎么样恢复让任务就绪,这个让我很困惑?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-13 23:05:54 | 显示全部楼层
回复【33楼】hh406:
---------------------------------
这个你去看ucos的原理吧,我也没有研究。
看看邵贝贝那本翻译的书。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-12-2
在线时间
21 小时
发表于 2015-7-14 09:04:21 | 显示全部楼层
回复【34楼】正点原子:
---------------------------------
好的,谢谢原子哥
回复 支持 反对

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-7-29
在线时间
0 小时
发表于 2015-7-30 18:23:32 | 显示全部楼层
回复【34楼】正点原子:
---------------------------------
看了这个问题想了下可以用OSTaskSuspend()这个函数不就可以解决三个任务的切换,又想到这样子就少了实时性。那么问题来了,要什么时候才用这个函数OSTaskSuspend()?    请指点迷津,谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-30 20:25:49 | 显示全部楼层
回复【36楼】那一片天空:
---------------------------------
我也很少用这个。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-7-29
在线时间
0 小时
发表于 2015-7-31 09:34:43 | 显示全部楼层
回复【37楼】正点原子:
---------------------------------
唔……
回复 支持 反对

使用道具 举报

6

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-4-9
在线时间
76 小时
发表于 2015-8-3 12:24:55 | 显示全部楼层
回复【36楼】那一片天空:
---------------------------------
原子哥给了一份资料《UCOS-III知识点总结》有这样一个知识点:
51、调用 OSTaskSuspend() 会任务无条件地停止运行。 有些时候调用 OSTaskSuspend() 不是为了等待某个事件的发生,而是等待另一个任务调用 OSTaskResume() 函数恢复这个任务。
自己琢磨琢磨这句话的含义吧。
签名必须手写!
回复 支持 反对

使用道具 举报

6

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-4-9
在线时间
76 小时
发表于 2015-8-3 12:29:14 | 显示全部楼层
回复【40楼】sf116:
---------------------------------
可以看下<卢有亮>的例程<BP25_基于UCOS任务挂起和中断处理及循环缓冲数据采集处理实验>是怎样使用任务挂起与恢复功能的
签名必须手写!
回复 支持 反对

使用道具 举报

6

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2013-4-9
在线时间
76 小时
发表于 2015-8-3 12:31:03 | 显示全部楼层
回复【37楼】正点原子:
---------------------------------
原子哥我提的问题到现在也没有最佳答案,/(ㄒoㄒ)/~~
签名必须手写!
回复 支持 反对

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-7-29
在线时间
0 小时
发表于 2015-8-3 15:41:13 | 显示全部楼层
回复【40楼】sf116:
---------------------------------
好的! 谢谢哈!
回复 支持 反对

使用道具 举报

10

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
500
金钱
500
注册时间
2014-9-1
在线时间
77 小时
发表于 2015-9-16 11:27:02 | 显示全部楼层
回复【33楼】hh406:
---------------------------------
一旦规定的延时时限到,或者有其他任务调用OSTimeDlyResume()取消延时,被延时的任务就会马上进入就绪态。
不知道这样理解对不对。。
其实如果全都挂起了,不是还有空闲任务吗?
UCOS任务又是如何从空闲任务里切换出去ne?参考http://forum.eepw.com.cn/thread/207351/1
回复 支持 反对

使用道具 举报

15

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2015-7-22
在线时间
126 小时
发表于 2015-12-5 11:44:11 | 显示全部楼层
优先级为5的任务是用户的最高优先级任务,OSStart之后它先运行,在这个任务中一定要有延迟或者任务切换函数,低优先的6才能被执行。当优先级为6的任务执行的时候进行任务切换之后是优先级为7的任务执行。为什么呢?因为优先级为5的任务还是在挂起状态(它的延迟时间没到,一但到达他的延迟时间他就会被再次调用),所以才能运行低优先及的任务!
     不知道这样解释楼主是不是明白。简单的说就是多任务要顺利切换,优先级最高的用户任务里面必须有足够的延迟!
work is work!!!
回复 支持 反对

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
发表于 2015-12-6 02:50:45 | 显示全部楼层
信号量不能解决?
我是一只菜鸟,但我会大鹏展翅
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 04:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表