OpenEdv-开源电子网

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

UCOSII中各任务中延时的问题。

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-9-22
在线时间
0 小时
发表于 2015-2-3 16:46:16 | 显示全部楼层 |阅读模式
5金钱
void led1_task(void *pdata)
{
while(1)
{
LED0=0;
OSTimeDly(10);
LED0=1;
OSTimeDly(10);
};
}

void led2_task(void *pdata)
{  
while(1)
{
LED1=0;
OSTimeDly(20);
LED1=1;
OSTimeDly(20);
};
}
这是原子哥任务调度的两个简单任务(为了方便我直接把delay_ms()改成OSTimeDly()),我们假如从初始开始,LED1的优先级高于LED0。那么先开始执行LED1任务,当执行到OSTimeDly(20)时,由于开始两个任务都处于就绪态,那么程序进入LED0任务,在执行到OSTimeDly(10)后,此时LED1任务暂停,那么程序进入空闲任务。之后问题来了,
(1)LED0延时的节拍数是少于LED2的,那么当LED0的节拍数提前减到0后,处于就绪,那么程序是从空闲任务跳出进入LED0的任务吗?
(2)那么之后如果LED1处于就绪后程序是从LED0跳出进入LED1吗。


最佳答案

查看完整内容[请看2#楼]

如果都就绪,进入高优先级任务 都没有就绪的,跑空闲任务或者统计任务
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-2-3 16:46:17 | 显示全部楼层
如果都就绪,进入高优先级任务

都没有就绪的,跑空闲任务或者统计任务
学无止境
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-2-3 18:42:16 | 显示全部楼层
始终记着一句话:UCOS每次任务切换的时候都是执行的已经就绪了的最高优先级的任务。
开往春天的手扶拖拉机
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-9-22
在线时间
0 小时
 楼主| 发表于 2015-2-3 19:03:37 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
那我上面说的是对的吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 02:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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