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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? commrtos.c

?? uCOS-II內(nèi)核分析,在單片機(jī)上實(shí)現(xiàn)uCOS-II的移植,同時(shí)在該操作系統(tǒng)上實(shí)現(xiàn)uart驅(qū)動(dòng)
?? C
字號(hào):
/*
*********************************************************************************************************
*                               基于uC/OS-II的串口驅(qū)動(dòng)及應(yīng)用程序接口函數(shù)
*                                             版權(quán)所有
*
* 文件名 : COMMRTOS.C
* 作者   : 陳是知 csz-mail@126.com 北京中軟 2005。3。11
*********************************************************************************************************
*/


#include "includes.h"

INT8U FirstCharFlag=0x01;  //注意:此為串口發(fā)送第一個(gè)字符的標(biāo)志,必須定義。

typedef struct {
    INT16U     RingBufRxCtr;                /* Number of characters in the Rx ring buffer              */
    OS_EVENT  *RingBufRxSem;                /* Pointer to Rx semaphore                                 */
    INT8U     *RingBufRxInPtr;              /* Pointer to where next character will be inserted        */
    INT8U     *RingBufRxOutPtr;             /* Pointer from where next character will be extracted     */
    INT8U      RingBufRx[COMM_RX_BUF_SIZE]; /* Ring buffer character storage (Rx)                      */
    INT16U     RingBufTxCtr;                /* Number of characters in the Tx ring buffer              */
    OS_EVENT  *RingBufTxSem;                /* Pointer to Tx semaphore                                 */
    INT8U     *RingBufTxInPtr;              /* Pointer to where next character will be inserted        */
    INT8U     *RingBufTxOutPtr;             /* Pointer from where next character will be extracted     */
    INT8U      RingBufTx[COMM_TX_BUF_SIZE]; /* Ring buffer character storage (Tx)                      */
} COMM_RING_BUF;


COMM_RING_BUF  CommBuf;


void  CommBufInit (void) reentrant
{
    COMM_RING_BUF *pbuf;

    pbuf                  = &CommBuf;                     /* Initialize the ring buffer for COMM1     */
    pbuf->RingBufRxCtr    = 0;
    pbuf->RingBufRxInPtr  = &pbuf->RingBufRx[0];
    pbuf->RingBufRxOutPtr = &pbuf->RingBufRx[0];
    pbuf->RingBufRxSem    = OSSemCreate(0);
    pbuf->RingBufTxCtr    = 0;
    pbuf->RingBufTxInPtr  = &pbuf->RingBufTx[0];
    pbuf->RingBufTxOutPtr = &pbuf->RingBufTx[0];
    pbuf->RingBufTxSem    = OSSemCreate(COMM_TX_BUF_SIZE);
	   
}



INT8U  CommPutChar (INT8U c, INT16U to) reentrant
{
    INT8U          oserr;
    COMM_RING_BUF  *pbuf;
	extern INT8U FirstCharFlag;
    pbuf=&CommBuf;
    OSSemPend(pbuf->RingBufTxSem, to, &oserr);             /* Wait for space in Tx buffer              */
    if (oserr == OS_TIMEOUT) {
        return (COMM_TX_TIMEOUT);                          /* Timed out, return error code             */
    }
    OS_ENTER_CRITICAL();
    pbuf->RingBufTxCtr++;                                  /* No, increment character count            */
    *pbuf->RingBufTxInPtr++ = c;                           /* Put character into buffer                */
    if (pbuf->RingBufTxInPtr == &pbuf->RingBufTx[COMM_TX_BUF_SIZE]) {     /* Wrap IN pointer           */
        pbuf->RingBufTxInPtr = &pbuf->RingBufTx[0];
    }
    if (pbuf->RingBufTxCtr == 1) {                         /* See if this is the first character       */
      if(FirstCharFlag==0x01)
      
       TI=1;                                               /* Yes, Enable Tx interrupts                */
      
    }
    OS_EXIT_CRITICAL();
    return (COMM_NO_ERR);
}

void  CommPutRxChar (INT8U c) reentrant
{
    COMM_RING_BUF *pbuf;
	pbuf=&CommBuf;

    if (pbuf->RingBufRxCtr < COMM_RX_BUF_SIZE) {           /* See if buffer is full                    */
        pbuf->RingBufRxCtr++;                              /* No, increment character count            */
        *pbuf->RingBufRxInPtr++ = c;                       /* Put character into buffer                */
        if (pbuf->RingBufRxInPtr == &pbuf->RingBufRx[COMM_RX_BUF_SIZE]) { /* Wrap IN pointer           */
            pbuf->RingBufRxInPtr = &pbuf->RingBufRx[0];
        }
        OSSemPost(pbuf->RingBufRxSem);                     /* Indicate that character was received     */
    }
}

INT8U  CommGetChar (INT16U to, INT8U *err) reentrant
{
    INT8U          c;
    INT8U          oserr;
    COMM_RING_BUF *pbuf;
    pbuf=&CommBuf;
    OSSemPend(pbuf->RingBufRxSem, to, &oserr);             /* Wait for character to arrive             */
    if (oserr == OS_TIMEOUT) {                             /* See if characters received within timeout*/
        *err = COMM_RX_TIMEOUT;                            /* No, return error code                    */
        return (NUL);
    } else {
        OS_ENTER_CRITICAL();
        pbuf->RingBufRxCtr--;                              /* Yes, decrement character count           */
        c = *pbuf->RingBufRxOutPtr++;                      /* Get character from buffer                */
        if (pbuf->RingBufRxOutPtr == &pbuf->RingBufRx[COMM_RX_BUF_SIZE]) {     /* Wrap OUT pointer     */
            pbuf->RingBufRxOutPtr = &pbuf->RingBufRx[0];
        }
        OS_EXIT_CRITICAL();
        *err = COMM_NO_ERR;
        return (c);
    }
}

INT8U  CommGetTxChar (INT8U *err) reentrant
{ 
    INT8U          c;
    COMM_RING_BUF *pbuf;
    pbuf=&CommBuf;

    if (pbuf->RingBufTxCtr > 0) {                          /* See if buffer is empty                   */
        pbuf->RingBufTxCtr--;                              /* No, decrement character count            */
        c = *pbuf->RingBufTxOutPtr++;                      /* Get character from buffer                */
        if (pbuf->RingBufTxOutPtr == &pbuf->RingBufTx[COMM_TX_BUF_SIZE]) {     /* Wrap OUT pointer     */
            pbuf->RingBufTxOutPtr = &pbuf->RingBufTx[0];
        }
        OSSemPost(pbuf->RingBufTxSem);                     /* Indicate that character will be sent     */
        *err = COMM_NO_ERR;
        return (c);                                        /* Characters are still available           */
    } else {
        *err = COMM_TX_EMPTY;
        return (NUL);                                      /* Buffer is empty                          */
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频免费看| 色哟哟一区二区在线观看| 中文字幕亚洲欧美在线不卡| 91麻豆精品国产自产在线| 成人精品在线视频观看| 激情伊人五月天久久综合| 亚洲资源中文字幕| 国产精品国产自产拍在线| 日韩欧美国产系列| 欧美人动与zoxxxx乱| 99re在线精品| 成人18视频日本| 国产一区二区三区四区在线观看| 日韩高清在线一区| 亚洲综合色视频| 亚洲精品一卡二卡| 国产精品久久久久一区| 国产亚洲精品bt天堂精选| 日韩一二三四区| 欧美另类变人与禽xxxxx| 在线观看视频一区| 色综合久久综合网| 一本一本大道香蕉久在线精品| 国产传媒一区在线| 国产精一区二区三区| 国产一区二区三区综合| 久久国产精品第一页| 美国毛片一区二区| 免费成人在线观看| 精品中文字幕一区二区小辣椒| 丝袜脚交一区二区| 日韩福利视频网| 美女一区二区视频| 免费在线观看一区二区三区| 日韩二区三区四区| 久久精品国产亚洲aⅴ| 免费成人美女在线观看| 精品在线观看免费| 国产一区二区三区观看| 国产精品18久久久久久久久| 国产一区 二区 三区一级| 国产成人自拍网| 成人免费高清视频在线观看| 99久久99久久综合| 欧美色图12p| 欧美一区二区精品| 精品国产百合女同互慰| 欧美激情综合网| 亚洲品质自拍视频网站| 亚洲成av人片在线观看无码| 日韩高清欧美激情| 国产乱子伦视频一区二区三区| 国产成人a级片| 91在线免费看| 91精品国产色综合久久不卡电影 | 美女mm1313爽爽久久久蜜臀| 精品一区二区影视| 波多野结衣欧美| 欧美影院午夜播放| 精品少妇一区二区三区日产乱码| 国产亚洲欧美一级| 亚洲人吸女人奶水| 日韩**一区毛片| 国产91综合一区在线观看| 91同城在线观看| 91精品一区二区三区久久久久久| 久久久久久麻豆| 一区二区三区精品视频| 日韩精彩视频在线观看| 国产**成人网毛片九色 | 欧美精品一区二区三区蜜桃 | 91精品办公室少妇高潮对白| 69堂成人精品免费视频| 亚洲精品一区二区三区在线观看| 国产日产精品一区| 亚洲国产综合人成综合网站| 日韩激情av在线| jlzzjlzz国产精品久久| 欧美日韩激情一区| 国产精品―色哟哟| 日韩avvvv在线播放| aaa亚洲精品| 日韩欧美国产三级| 一区二区在线看| 狠狠狠色丁香婷婷综合激情| 欧美专区日韩专区| 中文字幕高清不卡| 男男视频亚洲欧美| 色狠狠综合天天综合综合| 久久综合久久综合九色| 亚洲国产精品久久久男人的天堂 | 国产精品一线二线三线| 欧洲在线/亚洲| 中文字幕av一区二区三区| 奇米影视在线99精品| 91黄色在线观看| 国产欧美日韩中文久久| 免费观看30秒视频久久| 欧美亚洲禁片免费| 一区视频在线播放| 国产精品影视在线| 日韩三级视频中文字幕| 亚洲成人av电影在线| 99精品一区二区| 亚洲国产精品二十页| 久国产精品韩国三级视频| 91.麻豆视频| 亚洲777理论| 色综合天天性综合| 欧美国产精品一区| 国产九九视频一区二区三区| 欧美一区二区三区免费观看视频| 亚洲免费av观看| 99re6这里只有精品视频在线观看| 精品久久久久久久久久久久包黑料| 亚洲第一成人在线| 在线亚洲一区观看| 综合在线观看色| 97se狠狠狠综合亚洲狠狠| 亚洲国产精品99久久久久久久久| 激情综合色播五月| 精品91自产拍在线观看一区| 免费精品视频在线| 日韩一区国产二区欧美三区| 日本亚洲最大的色成网站www| 欧美午夜片在线看| 一区二区成人在线| 91福利在线观看| 一区二区三区在线不卡| 一本久久a久久精品亚洲| 亚洲人精品午夜| 色婷婷av一区二区三区之一色屋| 国产精品盗摄一区二区三区| 成人精品视频一区二区三区尤物| 国产精品视频线看| 99综合影院在线| 亚洲色大成网站www久久九九| 99精品欧美一区| 一区二区三区成人| 精品视频一区三区九区| 午夜精品福利一区二区三区av| 欧美日韩一区小说| 日本vs亚洲vs韩国一区三区| 欧美成人免费网站| 国产精品一区在线| 欧美激情一二三区| 91麻豆免费在线观看| 亚洲午夜久久久久久久久电影网 | 26uuu亚洲综合色欧美| 国产麻豆一精品一av一免费| 国产免费成人在线视频| 成人国产精品免费网站| 一区二区三区精品视频在线| 91麻豆精品久久久久蜜臀| 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区三区在线观看网站| 欧美日韩美女一区二区| 久久99精品国产麻豆婷婷洗澡| 久久久久免费观看| 91麻豆蜜桃一区二区三区| 日日摸夜夜添夜夜添精品视频 | 国产成人免费av在线| 中文字幕一区二| 欧美一区国产二区| 高清在线观看日韩| 亚洲一线二线三线久久久| 欧美一区二区三区日韩视频| 成人午夜激情在线| 亚洲1区2区3区4区| 国产午夜三级一区二区三| 99re视频这里只有精品| 免费成人av在线播放| 亚洲丝袜自拍清纯另类| 欧美一区二区观看视频| 97se亚洲国产综合自在线不卡 | 在线国产亚洲欧美| 久久99热99| 亚洲综合丝袜美腿| 久久久不卡网国产精品二区 | 亚洲欧洲成人av每日更新| 欧美肥妇free| av在线一区二区三区| 欧美aaaaaa午夜精品| 亚洲啪啪综合av一区二区三区| 日韩欧美国产1| 欧美性色综合网| 成人高清视频免费观看| 六月丁香综合在线视频| 亚洲精品亚洲人成人网| 久久伊人中文字幕| 在线不卡一区二区| 99久久99久久综合| 国产综合色产在线精品| 亚洲图片欧美一区| 国产精品国模大尺度视频| 精品国产第一区二区三区观看体验| 欧美性感一区二区三区| 99久久国产免费看| 成人综合婷婷国产精品久久| 精品一区二区在线免费观看|