专栏中心

EEPW首页 > 专栏 > uCos任务就绪的算法

uCos任务就绪的算法

发布人:patton 时间:2008-05-14 来源:工程师 发布文章

1.使任务进入就绪态

OSRdyGrp            |= OSMapTbl[prio >> 3];
 
OSRdyTbl[prio >> 3] |= OSMapTbl[prio & 0x07];
 


2.从就绪表中删除一个任务

if ((OSRdyTbl[prio >> 3] &= ~OSMapTbl[prio & 0x07]) == 0)
 
    OSRdyGrp &= ~OSMapTbl[prio >> 3];
 


3.找出进入就绪态的优先级最高的任务

y    = OSUnMapTbl[OSRdyGrp];
 
x    = OSUnMapTbl[OSRdyTbl[y]];
 
prio = (y << 3) + x;
 


4.uC/OS中的"OSUnMapTbl[]"的产生:
INT8U const OSUnMapTbl[] ={
0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
}


这个表中的元素值表示该元素的索引的最低为1位的位置。例如,第4个元素,其索引值4的二进制表示为(00000100), 其最低为1的位是第2位,所以第4个元素值是2。再比如第5个元素,其索引值5的二进制表示为(00000101),其最低为1的位是第0位,所以第5个元素值为0。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

三星3纳米以下制程中DTCO将成关键

EDA/PCB 2025-10-30

EPM7128A and EPM7128AE Dedicated Pin-Outs

研调上修本季DRAM涨幅 上看23%

从系统设计到源代码:Tobias Kästner 谈 Zephyr

Vicor 电源模块 VI 的基本功能介绍

视频 2010-09-02

联发科技宣传片

视频 2010-09-07

温度传感器类型与温度测量技术

光传感器技术:光电池与光敏电阻

C算法

资源下载 2007-02-28

ConvergenSC

资源下载 2007-02-28

开放的汽车电子控制系统研究

越疆斩获超8050万元具身智能机器人订单!采购方为业内领先的现代化高精密制造企业

机器人 2025-10-30

位置传感器与线性位置换能器

物联网与传感器 2025-10-30

英伟达估值突破5万亿美元,人工智能热潮推动迅速崛起

湃睿科技亮相 2025 船舶工业数智化创新技术交流大会,共绘船舶高质量发展新蓝图

力科助力汽车电子总线开发

视频 2010-09-08

NVIDIA GTC DC加映演出 解析黄仁勋「一石三鸟」大计

智能计算 2025-10-30

SerDes在汽车电子系统的应用

视频 2010-09-08
更多 培训课堂
更多 焦点
更多 视频

技术专区