此帖出自实时操作系统RTOS论坛
最新回复
等待任务列表中查找最高优先级的任务(ucos)的例子,看不懂,求详解。
以下是例子: 但是没看懂 26 是怎么运算得出的。 求解。
举例来说,如果.OSEventGrp的值是01101000(二进制),而对应的
OSUnMapTbl[.OSEventGrp]值为3,说明最高优先级任务所在的组是3。类似地
,如果.OSEventTbl[3]的值是11100100(二进制),OSUnMapTbl
[.OSEventTbl[3]]的值为2,则处于等待状态的任务的最高优先级是3×8+2=26。
答:
OSEventGrp中的最低位(位0)为1,说明优先级为0-7的任务有就绪的,就是说就绪表的0行有就绪的
OSEventGrp中的最低位(位N)为1,说明优先级为7N-(7N+7)的任务有就绪的,就是说就绪表的第N(N取值范围0-7)行有就绪的
OSUnMapTbl[OSEventGrp]这个查表的时间是固定的,是随机存取,因此立刻获得了最高优先级任务所在的组就绪表行数
因此:OSUnMapTbl[01101000]查到的是最右边的1的位置3
OSEventTbl[3]的值是11100100,同样查表,得到最右边的1的位置是2
那么3
详情
回复
发表于 2013-11-14 15:26
| ||
|
||
此帖出自实时操作系统RTOS论坛
| ||
个人签名淘宝小店:http://brightpoint.taobao.com
|
||
EEWorld Datasheet 技术支持