打印
[ZLG-ARM]

用ZLG提供的21XX的ucos2的模板创建的工程只能运行一个任务?

[复制链接]
2270|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
motic2007|  楼主 | 2007-7-6 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助:用ZLG提供的21XX的ucos2的模板创建的工程只能运行一个任务?

不知道是什么原因,用21XX模板创建的UCOS2工程,在创建任务时,只有第一个被创建的任务被执行。我有两个任务,分别点亮两个LED灯,无论先创建那个任务,都可以正常运行,说明任务本身没有问题,但后创建的任务始终不被执行。
我用的是LPC2104。清高手指点,十分感谢!

相关帖子

沙发
ncsm| | 2007-7-12 01:59 | 只看该作者

优先级问题

应该是先创建的任务优先级高,后创建的任务优先级低。而优先级高的任务中没有让出CPU的时候,导致低优先级的任务始终得不到CPU时间。
你试试先创建低优先级的任务,再创建高优先级的任务,那么应该是低优先级的任务能执行一次,然后跳到高优先级任务中就一直不出来了。

使用特权

评论回复
板凳
ayb_ice| | 2007-7-12 07:50 | 只看该作者

代码帖出来...

使用特权

评论回复
地板
btiger2000| | 2007-7-12 10:05 | 只看该作者

恐怕跟2楼说的还有出入吧?

即使先创建底优先级的任务,如果他不释放CPU,也没有中断的话,高优先级的任务也没机会执行。

这也是楼主无论先创建哪个任务(优先级一高、一低),都不会执行后一个的原因吧?

使用特权

评论回复
5
HQGBOY| | 2007-7-12 15:15 | 只看该作者

用ZLG提供的21XX的ucos2的模板创建的工程只能运行一个任务?

不可能...

使用特权

评论回复
6
jackxu| | 2007-8-27 11:14 | 只看该作者

任务优先级问题!

把后创建的任务优先级调高于第一个任务!

使用特权

评论回复
7
lammy| | 2007-8-27 14:52 | 只看该作者

看下OS_CFG.H中的参数OS_MAX_TASKS

可能是你的OS_CFG.H下的OS_MAX_TASKS为3或2。个人愚见。

使用特权

评论回复
8
wlsui| | 2007-8-27 20:57 | 只看该作者

Re:

两个任务的堆栈空间是否一样了?
如果两个任务的堆栈都一样那就只能运行一个任务

使用特权

评论回复
9
lammy| | 2007-8-29 07:29 | 只看该作者

我认为楼上的分析不对!

楼上所说的堆栈都一样,应该是指他的堆栈入口地址一样吧;我认为这是不对的,如果这两个任务的堆栈入口地址相同,那么这两个任务最多都只能执行一次,然后就不知道跑哪去了,我是这样分析的:如果由最先执行的任务创建另一个任务,如果创建完后,该任务余下的运行不牵涉到自己栈空间,那么第一个任务有可能执行完,否则是不可能执行完的,同样的分析方法可以肯定第二个任务执行的可能的很少。
个人愚见,希望高手能在百忙中帮助我们这些菜鸟。

使用特权

评论回复
10
wlsui| | 2007-8-29 11:01 | 只看该作者

Re:

如果任务都是在main()里创建的(即OSStart() 之前)则只能执行后创建的任务.因为堆栈里的内容都是被初始化为后创建的任务的,即使发生任务切换也是切换回该任务.而先创建的任务则根本无法运行.
个人愚见

使用特权

评论回复
11
lammy| | 2007-9-2 08:06 | 只看该作者

Re;

呵呵,你的分析是对的,但是不知道楼主是因为什么问题而只能运行一个任务!呵呵!

使用特权

评论回复
12
motic2007|  楼主 | 2007-9-14 15:18 | 只看该作者

找到原因了

找到原因了,是因为ram不够用,换了一个容量大点的ram,程序不用作任何修改都可以运行了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝