uCOS-II

Posted mapleay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uCOS-II相关的知识,希望对你有一定的参考价值。

1. 确定

如果优先级个数小于64,定义 OS_PRIO INT8U,否则默认为256个优先级 定义为INT16U。

#if OS_LOWEST_PRIO <= 63u
typedef INT8U OS_PRIO;
#else
typedef INT16U OS_PRIO;
#endif

uCOS-II中设计了一个优先级表OSxxxTbl表中的每个bit定义对应一个优先级,该优先级就绪则该bit置1,否则置0,有多少个位就有多少个优先级,优先级按照位的顺序排列。

 

OS_PRIO  OSxxxGrp和OS_PRIO OSxxxTbl[OS_xxx_TBL_SIZE]配合起来使用;系统有(OS_xxx_TBL_SIZE x (SizeofBits(OS_PRIO)))个优先级,也就是 SizeofBits(OSxxxTbl[OS_xxx_TBL_SIZE])。

 

设Grpx 为就绪组中优先级最高的那个组,MaxPrio为就绪组中最高优先级

Grpx   = OSUnMapTbl [OSxxxGrp]

MaxPrio = OSUnMapTbl[OSxxxTbl[Grpx]]

 

OSUnMapTbl的含义是,在8个位(8个优先级任意状态),即 28 =256种情况中,确定优先级最高的就绪位。所以64个优先级,需要先确定8个组中优先级最高的那个组,再确定组中优先级最高的那个位。

 





以上是关于uCOS-II的主要内容,如果未能解决你的问题,请参考以下文章