zoukankan      html  css  js  c++  java
  • uCOSII中的OSUnMapTbl

    /*
    *********************************************************************************************************
    *                                       位优先级查找表
    *
    * Note: 这个表主要是用于查找当前最高优先级值的,对于8*8的优先级序列共分为8个组,每组8个元素
    *       组别用一个字节分位表示"OSEventGrp"其bit0~bit7分别对应0~7组,元素用"OSEventTbl[OS_EVENT_TBL_SIZE]"表示
    *       某个优先级的事件触发后,相应组别的位置1,对应元素位置1
    *       如优先级为43的事件触发,对应组号为43/8=5,对应元素位43%8=3,则OSEventGrp的bit5置1,OSEventTbl[5]的bit3置1
    *       当很多事件触发后,就需要找到当前最高优先级的事件,就要用到下表.
    *       这个表的本质是0~255用二进制表示后从右往左数第一个1的位置,
    *       如12用二进制表示为"00001100"则表中就是OSUnMapTbl[12] = 2
    *       具体使用的时候先通过查表找到"OSEventGrp"中1的最低位"y",然后找到"OSEventTbl[y]"中1的最低位"x"
    *       则"y*8+x"得到的就是当前系统触发的最高优先级事件
    *********************************************************************************************************
    */
    
    INT8U  const  OSUnMapTbl[256] = {
        0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x00 to 0x0F                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x10 to 0x1F                             */
        5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x20 to 0x2F                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x30 to 0x3F                             */
        6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x40 to 0x4F                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x50 to 0x5F                             */
        5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x60 to 0x6F                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x70 to 0x7F                             */
        7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x80 to 0x8F                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x90 to 0x9F                             */
        5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xA0 to 0xAF                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xB0 to 0xBF                             */
        6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xC0 to 0xCF                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xD0 to 0xDF                             */
        5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xE0 to 0xEF                             */
        4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0        /* 0xF0 to 0xFF                             */
    };
    

      

  • 相关阅读:
    Python2.7-math, cmath
    Python2.7-pprint
    Python2.7-copy
    Python2.7-weakref
    Python2.7-Queue
    Python2.7-sched
    Python2.7-array
    Python2.7-bisect
    搜索专题:Balloons
    【洛谷P4460】解锁屏幕【状压dp】
  • 原文地址:https://www.cnblogs.com/lancky/p/2149013.html
Copyright © 2011-2022 走看看