"); //-->
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将成关键
EPM7128A and EPM7128AE Dedicated Pin-Outs
有关dns的疑问
研调上修本季DRAM涨幅 上看23%
How to develop an eXtended board for PC104 with embedded linux?
可不可以通过设置proxy的方式来实现nat功能啊
从系统设计到源代码:Tobias Kästner 谈 Zephyr
Vicor 电源模块 VI 的基本功能介绍
联发科技宣传片
对twentyone写的bootloade看不懂的地方,想问问!!
555机动车方向灯电子闪烁器电路图
温度传感器类型与温度测量技术
书籍推荐:实时设计模式
自动冲水器的电路图
光传感器技术:光电池与光敏电阻
C算法
555太阳牌汽车报警器电路图
ConvergenSC
555新颖的长定时电路图
电缆测试电路图
开放的汽车电子控制系统研究
越疆斩获超8050万元具身智能机器人订单!采购方为业内领先的现代化高精密制造企业
位置传感器与线性位置换能器
英伟达估值突破5万亿美元,人工智能热潮推动迅速崛起
湃睿科技亮相 2025 船舶工业数智化创新技术交流大会,共绘船舶高质量发展新蓝图
力科助力汽车电子总线开发
CPU开发工具链的自动设计
NVIDIA GTC DC加映演出 解析黄仁勋「一石三鸟」大计
Computer Networks A System Approach (Peterson Davie).
SerDes在汽车电子系统的应用