亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_view.c

?? 移植到freescale 9s12系列單片機的uCOSII
?? C
?? 第 1 頁 / 共 3 頁
字號:
                 OSView_RxChkSum    = rx_data;
                 OSView_RxRemainLen = rx_data;
                 OSView_RxState     = OS_VIEW_RX_STATE_DATA;
             }
             break;

        case OS_VIEW_RX_STATE_DATA:                         /* waiting for data                                */
             OSView_RxStoINT8U(rx_data);
             OSView_RxChkSum += rx_data;
             if (--OSView_RxRemainLen == 0) {
                 OSView_RxState = OS_VIEW_RX_STATE_CHKSUM;
             }
             break;

        case OS_VIEW_RX_STATE_CHKSUM:                       /* waiting for checksum                            */
             OSView_RxChkSum += rx_data;
             if ((OSView_RxChkSum & 0xFF) == 0x00) {
                 OSView_RxState = OS_VIEW_RX_STATE_ED;
             } else {
                 OSView_RxState = OS_VIEW_RX_STATE_SD0;
             }
             break;

        case OS_VIEW_RX_STATE_ED:
             if (rx_data == OS_VIEW_PROTOCOL_RX_ED) {       /* End delimiter ?                                 */
                 OSView_RxPktCtr++;
                 OSView_RxPkt();                            /* Parse received packet                           */
             }
             OSView_RxState = OS_VIEW_RX_STATE_SD0;
             break;

        default:
             OSView_RxState = OS_VIEW_RX_STATE_SD0;
             break;
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                        PARSE RECEIVED PACKET
*
* Description: This function is called when a packet has been received and needs to be processed.
*********************************************************************************************************
*/

static  void  OSView_RxPkt (void)
{
#if OS_VIEW_PARSE_TASK > 0
#if OS_SEM_EN > 0
    OSSemPost(OSView_Sem);                         /* We have a whole packet, signal task to parse it! */
#else
#if OS_MBOX_EN > 0
    OSMboxPost(OSView_Mbox, (void *)1);
#endif
#endif

#else
    INT16U   len;


    len = OSView_CmdParsePkt();                    /* We have a whole packet, parse it!                */
    if (len > 0) {
        OSView_TxLen = len;
        OSView_TxStart();
    }
#endif
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                        STORE DATA IN Rx BUFFER
*
* Description: This routine is called whenever a valid byte has been received.
*********************************************************************************************************
*/

static  void  OSView_RxStoINT8U (INT8U rx_data)
{
    if (OSView_RxBufCnt < OS_VIEW_RX_BUF_SIZE) {
        OSView_RxBuf[OSView_RxBufCnt++] = rx_data;
    }
}


/*
*********************************************************************************************************
*                                           CLEAR Rx BUFFER
*********************************************************************************************************
*/

static  void  OSView_RxBufClr (void)
{
    OSView_RxBufCnt = 0;
    OSView_RxRdIx   = 0;
}

/*
*********************************************************************************************************
*                                     GET 8, 16 or 32-bit DATA
*********************************************************************************************************
*/

static  INT8U  OSView_RxGetINT8U (void)
{
    return (OSView_RxBuf[OSView_RxRdIx++]);
}


static  INT16U  OSView_RxGetINT16U (void)
{
    INT16U  lowbyte;
    INT16U  highbyte;


    highbyte = OSView_RxGetINT8U();
    lowbyte  = OSView_RxGetINT8U();
    return ((highbyte << 8) | lowbyte);
}


static  INT32U  OSView_RxGetINT32U (void)
{
    INT32U  highword;
    INT32U  lowword;


    highword = OSView_RxGetINT16U();
    lowword  = OSView_RxGetINT16U();
    return ((highword << 16) | lowword);
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                  START TRANSMISSION OF REPLY PACKET
*********************************************************************************************************
*/

void  OSView_TerminalRxSetCallback (void (*call_back)(INT8U rx_data))
{
    OSView_TerminalRxCallbackFnct = call_back;
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                 SEND AN ASCII STRING TO TERMINAL WINDOW
*
* Description: This function allows an application to send strings to the TERMINAL window in the viewer.
*
* Arguments  : s     is a pointer to the string to send.
*
*              dly   allows the calling task to delay itself for 'dly' ticks until the current string
*                    is sent.  If 'dly' is set to 0, then the string will not be sent if a string is
*                    currently in the process of being sent.  In other words, if there is a string currently
*                    being sent and you sent 'dly' to 0, OSView_TxStr() will return to the caller and the
*                    string will not be sent.
*
* Note(s)    : 1) This function MUST be called from a TASK and NOT an ISR.
*********************************************************************************************************
*/

void  OSView_TxStr (INT8U *s, INT16U dly)
{
    INT16U  len;


    len = (INT16U)OS_StrLen(s);                           /* Make sure string fits in buffer           */
    if (len >= OS_VIEW_TX_STR_SIZE) {                     /* Force end of string if string too long    */
        len    = OS_VIEW_TX_STR_SIZE - 1;
        s[len] = '\0';
    }
    if (OSView_TxStrLen > 0) {                            /* Are currently busy sending a string?      */
        if (dly > 0) {                                    /* Yes, does caller want to wait?            */
            while (OSView_TxStrLen > 0) {                 /* Yes, let other tasks run                  */
                OSView_TxStrDlyCtr++;
                OSTimeDly(dly);
            }
            OSView_TxStrLen = len;                        /* Update the string length                  */
            OS_StrCopy(&OSView_TxStrBuf[0], s);           /* Copy string to send to buffer             */
            if (OSView_TxStrLen > 0) {
                OSView_TxStart();
            }
        }
    } else {
        OSView_TxStrLen = len;                            /* Update the string length                  */
        OS_StrCopy(&OSView_TxStrBuf[0], s);               /* Copy string to send to buffer             */
        if (OSView_TxStrLen > 0) {
            OSView_TxStart();
        }
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                  START TRANSMISSION OF REPLY PACKET
*********************************************************************************************************
*/

static  void  OSView_TxStart (void)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr = 0;
#endif


    OS_ENTER_CRITICAL();
    if (OSView_TxActiveFlag == OS_FALSE) {
        OSView_TxHandler();
        OSView_TxIntEn();
    }
    OS_EXIT_CRITICAL();
}

/*
*********************************************************************************************************
*                                               Tx Handler
*
* Description: This routine is called from the transmitter buffer empty interrupt service handler.
*              It will send out the next byte in the buffer.
*
* Returns:     none
*********************************************************************************************************
*/

void  OSView_TxHandler (void)
{
    INT8U  tx_data;


    switch (OSView_TxState) {
        case OS_VIEW_TX_STATE_SD0:
             if (OSView_TxLen > 0 || OSView_TxStrLen > 0) { /* Packet in buffer or string waiting to be send ? */
                 OSView_Tx1(OS_VIEW_PROTOCOL_TX_SD0);
                 OSView_TxCtr++;
                 OSView_TxActiveFlag = OS_TRUE;
                 OSView_TxState      = OS_VIEW_TX_STATE_SD1;
                 OSView_TxIx         = 0;
             } else {                                       /* If there is nothing to do end transmission      */
                 OSView_TxActiveFlag = OS_FALSE;
                 OSView_TxIntDis();                         /* No more data to send, disable Tx interrupts     */
                 break;
             }
             break;

        case OS_VIEW_TX_STATE_SD1:
             OSView_Tx1(OS_VIEW_PROTOCOL_TX_SD1);
             OSView_TxCtr++;
             if (OSView_TxLen > 0) {
                 OSView_TxState = OS_VIEW_TX_STATE_DATA_LEN;
             } else {
                 OSView_TxState = OS_VIEW_TX_STATE_STR_LEN;
             }
             break;

        case OS_VIEW_TX_STATE_DATA_LEN:                       /* Include the packet length in the packet         */
             OSView_Tx1(OSView_TxLen);
             OSView_TxCtr++;
             OSView_TxState  = OS_VIEW_TX_STATE_DATA;
             OSView_TxChkSum = OSView_TxLen;
             break;

        case OS_VIEW_TX_STATE_DATA:
             tx_data = OSView_TxBuf[OSView_TxIx];
             OSView_Tx1(tx_data);
             OSView_TxCtr++;
             OSView_TxChkSum += tx_data;
             OSView_TxIx++;
             if (OSView_TxIx >= OSView_TxLen) {               /* See if we are done sending the packet           */
                 OSView_TxState  = OS_VIEW_TX_STATE_CHKSUM;
                 OSView_TxLen    = 0;
             }
             break;

        case OS_VIEW_TX_STATE_STR_LEN:                        /* String sending                                  */
             OSView_Tx1(OSView_TxStrLen + 1);
             OSView_TxCtr++;
             OSView_TxState  = OS_VIEW_TX_STATE_STR_TYPE;
             OSView_TxChkSum = OSView_TxStrLen + 1;
             break;

        case OS_VIEW_TX_STATE_STR_TYPE:
             OSView_Tx1('C');
             OSView_TxCtr++;
             OSView_TxState   = OS_VIEW_TX_STATE_STR_DATA;
             OSView_TxChkSum += 'C';
             break;

        case OS_VIEW_TX_STATE_STR_DATA:
             tx_data = OSView_TxStrBuf[OSView_TxIx];
             OSView_Tx1(tx_data);
             OSView_TxCtr++;
             OSView_TxChkSum += tx_data;
             if (++OSView_TxIx >= OSView_TxStrLen) {
                 OSView_TxState  = OS_VIEW_TX_STATE_CHKSUM;
                 OSView_TxStrLen = 0;
             }
             break;

        case OS_VIEW_TX_STATE_CHKSUM:                         /* Epilog ... checksum & end delimiter             */
             OSView_Tx1(OSView_TxChkSum);
             OSView_TxCtr++;
             OSView_TxState = OS_VIEW_TX_STATE_ED;
             break;

        case OS_VIEW_TX_STATE_ED:
             OSView_Tx1(OS_VIEW_PROTOCOL_TX_ED);
             OSView_TxCtr++;
             OSView_TxState  = OS_VIEW_TX_STATE_SD0;
             OSView_TxBufCnt = 0;                             /* Clear the Tx buffer                             */
             OSView_TxPktCtr++;
             break;

        default:
             OSView_TxState      = OS_VIEW_TX_STATE_SD0;
             OSView_TxActiveFlag = OS_FALSE;
             OSView_TxIntDis();                               /* No more data to send, disable Tx interrupts     */
             break;
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                     STORE 8, 16 or 32-bit DATA
*********************************************************************************************************
*/

static  void  OSView_TxStoINT8U (INT8U tx_data)
{
    if (OSView_TxBufCnt < OS_VIEW_TX_BUF_SIZE) {
        OSView_TxBuf[OSView_TxBufCnt++] = tx_data;
    }
}


static  void  OSView_TxStoINT16U (INT16U tx_data)
{
    OSView_TxStoINT8U(tx_data >> 8);
    OSView_TxStoINT8U(tx_data & 0x00FF);
}


static  void  OSView_TxStoINT32U (INT32U tx_data)
{
    OSView_TxStoINT16U(tx_data >> 16);
    OSView_TxStoINT16U(tx_data & 0x0000FFFFL);
}


static  void  OSView_TxStoPtr (void *ptr)
{
    INT32U  tx_data;


    tx_data = (INT32U)ptr;
    OSView_TxStoINT16U(tx_data >> 16);
    OSView_TxStoINT16U(tx_data & 0x0000FFFFL);
}


static  void  OSView_TxStoStr (INT8U *s, int max_len)
{
    INT8U   len;
    INT8U   i;
    INT8U  *ps;


    len = 0;
    ps  = s;
    if (ps != (INT8U *)0) {                                 /* Calculate length of string                      */
        while (*ps && (len < max_len)) {
            ps++;
            len++;
        }
    }
    OSView_TxStoINT8U(len);                                 /* Store string, length first                      */
    ps = s;
    for (i = 0; i < len; i++) {
        OSView_TxStoINT8U((INT8U)*ps);
        ps++;
    }
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费观看在线| 亚洲精品亚洲人成人网在线播放| 午夜精品在线看| 欧美欧美午夜aⅴ在线观看| 亚洲精品国产a久久久久久 | 337p亚洲精品色噜噜| 亚洲va欧美va人人爽| 欧美一级欧美三级在线观看| 奇米一区二区三区av| 精品美女在线观看| 成人精品在线视频观看| 亚洲色大成网站www久久九九| 欧美在线free| 美国三级日本三级久久99| 国产亚洲成aⅴ人片在线观看| 成人av午夜电影| 亚洲成av人片在线观看| 日韩欧美一二三| 成人av网站大全| 亚洲午夜激情av| wwww国产精品欧美| 成人国产在线观看| 亚洲第一主播视频| 久久久99久久| 91久久精品一区二区三| 裸体歌舞表演一区二区| 欧美激情在线一区二区三区| 色噜噜久久综合| 伦理电影国产精品| 一区在线中文字幕| 日韩欧美在线观看一区二区三区| 国产福利一区在线| 午夜精品久久久久久不卡8050| 久久综合九色综合欧美98| 色婷婷国产精品综合在线观看| 秋霞午夜鲁丝一区二区老狼| 国产精品福利在线播放| 欧美一区二区三区在线电影| av中文字幕在线不卡| 日本欧美肥老太交大片| 亚洲精品一二三| 中文字幕国产一区二区| 成人蜜臀av电影| 日韩成人免费电影| 亚洲色图都市小说| 久久亚洲影视婷婷| 69堂精品视频| 色综合久久综合网97色综合 | 成人小视频免费在线观看| 亚洲成a天堂v人片| 中文字幕亚洲在| 久久午夜免费电影| 在线播放一区二区三区| 91蝌蚪porny| 高潮精品一区videoshd| 狠狠色丁香久久婷婷综| 午夜国产精品影院在线观看| 亚洲欧美欧美一区二区三区| 国产亚洲精品久| 久久综合av免费| 欧美r级在线观看| 欧美丰满少妇xxxbbb| 91福利资源站| 色综合色综合色综合| 9l国产精品久久久久麻豆| 国产成人一区二区精品非洲| 久久 天天综合| 裸体歌舞表演一区二区| 美女尤物国产一区| 日韩国产欧美一区二区三区| 亚洲第一精品在线| 亚洲一区av在线| 亚洲一区在线电影| 亚洲图片一区二区| 亚洲一区影音先锋| 婷婷丁香激情综合| 日韩精品一级中文字幕精品视频免费观看 | 国产精品国产自产拍在线| 国产蜜臀av在线一区二区三区| 久久久久久久久97黄色工厂| 久久这里都是精品| 久久久.com| 国产精品久久影院| 亚洲天堂av老司机| 亚洲福利视频一区| 青青草视频一区| 久久99国产精品久久99果冻传媒| 麻豆一区二区三| 韩国精品免费视频| 懂色av一区二区在线播放| 成人精品一区二区三区中文字幕 | 奇米影视在线99精品| 另类调教123区| 国产伦精品一区二区三区免费| 国产剧情一区二区三区| 成人理论电影网| 在线免费观看日韩欧美| 8x8x8国产精品| 精品99久久久久久| 国产精品第四页| 亚洲一区二区三区影院| 日本欧美久久久久免费播放网| 精品一区中文字幕| 本田岬高潮一区二区三区| 91精彩视频在线| 日韩欧美第一区| 国产精品三级久久久久三级| 亚洲女人小视频在线观看| 亚洲成人自拍一区| 精品亚洲成a人| 91在线免费看| 91麻豆精品国产自产在线观看一区| 精品久久国产老人久久综合| 国产精品久久毛片a| 三级久久三级久久| 成人丝袜高跟foot| 91.com视频| 国产精品久久久久桃色tv| 日韩在线a电影| eeuss鲁片一区二区三区在线观看| 欧美色欧美亚洲另类二区| 精品国产凹凸成av人网站| 亚洲激情中文1区| 国产乱码精品一区二区三区五月婷| 色爱区综合激月婷婷| 久久亚洲一区二区三区四区| 夜夜嗨av一区二区三区网页| 国产美女在线精品| 欧美高清视频www夜色资源网| 国产午夜亚洲精品不卡 | 日韩国产精品久久| 91在线国产福利| 久久尤物电影视频在线观看| 亚洲精品乱码久久久久久黑人| 韩国精品在线观看| 欧美一区中文字幕| 伊人婷婷欧美激情| 成人免费毛片aaaaa**| 日韩一区二区三区观看| 亚洲综合小说图片| www.亚洲免费av| 久久久午夜精品理论片中文字幕| 亚洲成va人在线观看| 色综合中文字幕国产 | 成人动漫一区二区在线| 日韩区在线观看| 亚洲地区一二三色| 91丨九色丨蝌蚪富婆spa| 久久久久久久久99精品| 免费在线成人网| 欧美蜜桃一区二区三区| 亚洲一二三四区不卡| 亚洲国产精品激情在线观看| 奇米777欧美一区二区| 日本二三区不卡| 中文字幕免费在线观看视频一区| 免费成人在线观看| 欧美美女黄视频| 亚洲综合激情网| 91麻豆国产福利在线观看| 国产天堂亚洲国产碰碰| 久久91精品国产91久久小草| 欧美一区二区三区白人 | 亚洲日本va在线观看| 岛国av在线一区| 国产午夜亚洲精品理论片色戒| 狠狠狠色丁香婷婷综合激情| 欧美电影免费观看高清完整版在线| 亚洲一区二区三区中文字幕| 91蝌蚪porny| 亚洲精品中文在线影院| 色老综合老女人久久久| 亚洲精品日日夜夜| 在线观看国产日韩| 亚洲第一在线综合网站| 欧美日韩免费高清一区色橹橹 | 久久精品国产秦先生| 日韩视频一区二区三区在线播放| 肉肉av福利一精品导航| 欧美一区二区播放| 国产在线精品一区二区 | 欧美国产成人在线| 成人av在线影院| 亚洲激情六月丁香| 欧美日韩一区不卡| 蜜桃视频在线观看一区二区| 欧美mv日韩mv国产| 成人一道本在线| 亚洲精品国产成人久久av盗摄 | 一本久道久久综合中文字幕| 一区二区三区四区在线免费观看 | 国产精品你懂的在线欣赏| 99久久er热在这里只有精品66| 亚洲欧美电影院| 欧美日韩电影在线| 极品少妇一区二区三区精品视频| 国产三级精品三级| 欧美在线免费播放| 久久精品国产精品青草| 国产精品区一区二区三区|