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

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

?? commrtos.c

?? ucos-ii, 開發環境 c 語言,此代碼很有學習價值.
?? C
字號:
/*
*********************************************************************************************************
*                               基于uC/OS-II的串口驅動及應用程序接口函數
*                                             版權所有
*
* 文件名 : COMMRTOS.C
* 作者   : 陳是知 csz-mail@126.com 北京中軟 2005。3。11
*********************************************************************************************************
*/


#include "includes.h"

INT8U FirstCharFlag=0x01;  //注意:此為串口發送第一個字符的標志,必須定義。

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                          */
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久人人人人传媒| 中文字幕av一区二区三区高 | 欧美综合一区二区三区| 日韩激情视频在线观看| 国产欧美一二三区| 欧美巨大另类极品videosbest| 成人av手机在线观看| 麻豆国产欧美日韩综合精品二区 | 亚洲大片免费看| 久久久久久影视| 欧美丰满少妇xxxxx高潮对白 | 国产精品白丝av| 亚洲一二三区视频在线观看| 欧美极品aⅴ影院| 精品国产凹凸成av人网站| 欧美视频中文字幕| 91小视频在线| 播五月开心婷婷综合| 国产美女在线观看一区| 日本不卡视频一二三区| 亚洲午夜激情av| 亚洲乱码日产精品bd| 中文一区二区在线观看| 久久你懂得1024| 欧美一区二区黄| 亚洲图片激情小说| 久久久久九九视频| 欧美mv日韩mv国产| 日韩一级黄色片| 欧美日韩国产大片| 欧美三电影在线| 欧美日韩综合在线| 欧美日韩高清不卡| 欧美日韩国产精品成人| 欧美日韩国产精品成人| 欧美精品自拍偷拍动漫精品| 欧美亚洲一区三区| 欧美日韩国产一级片| 欧美图区在线视频| 欧美电影在线免费观看| 在线播放日韩导航| 欧美一级二级在线观看| 欧美电视剧在线观看完整版| 欧美一二三在线| 日韩一区二区在线看| 欧美成人官网二区| 欧美mv和日韩mv的网站| 337p日本欧洲亚洲大胆精品| 精品国产成人在线影院| 国产女同互慰高潮91漫画| 亚洲国产高清在线观看视频| 自拍偷拍亚洲欧美日韩| |精品福利一区二区三区| 亚洲人成亚洲人成在线观看图片| 玉足女爽爽91| 视频一区二区中文字幕| 久久不见久久见免费视频7 | 久久aⅴ国产欧美74aaa| 国产成人午夜精品影院观看视频 | 免费观看在线综合| 国产综合成人久久大片91| 国内精品不卡在线| 波多野结衣中文字幕一区 | 欧美日本在线播放| 欧美一区二区三区男人的天堂| 91精品国产色综合久久不卡电影 | 欧美xxxxxxxxx| 久久久www成人免费毛片麻豆 | 精品裸体舞一区二区三区| 国产校园另类小说区| 亚洲激情图片qvod| 美日韩一区二区| 成人高清视频在线| 91福利资源站| 日韩一区二区三区免费观看| 国产欧美一二三区| 一区二区三区中文在线观看| 蜜桃视频一区二区三区在线观看| 国产精品一区二区久久不卡| 色婷婷精品大视频在线蜜桃视频| 在线播放91灌醉迷j高跟美女| 久久品道一品道久久精品| 一区二区三区四区中文字幕| 久久精品国产99| 色呦呦网站一区| 欧美精品一区二| 亚洲午夜久久久久| 国产成人av在线影院| 精品视频在线视频| 欧美国产综合一区二区| 亚洲成人福利片| 成人小视频免费在线观看| 56国语精品自产拍在线观看| 国产精品三级av在线播放| 免费成人小视频| 91啪亚洲精品| 久久欧美一区二区| 日韩高清在线观看| 色呦呦网站一区| 日本一区二区三级电影在线观看| 天堂va蜜桃一区二区三区漫画版| 99久久精品国产导航| 精品国产一区二区三区四区四| 一区二区日韩av| 成人sese在线| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲成人久久影院| 91最新地址在线播放| 欧美精品一区在线观看| 天天综合色天天| 在线精品国精品国产尤物884a| 日本一区二区久久| 国产美女在线观看一区| 日韩三级免费观看| 天堂久久一区二区三区| 欧洲激情一区二区| 中文字幕一区免费在线观看| 久久99精品国产麻豆婷婷| 91精品国产一区二区人妖| 亚洲国产精品久久久男人的天堂| 91视频免费观看| 国产精品国产三级国产三级人妇 | 欧美日韩国产一级| 亚洲免费在线观看视频| 成人av在线网| 亚洲国产成人一区二区三区| 国产高清无密码一区二区三区| 日韩一级片网址| 美女视频免费一区| 91精品视频网| 日韩精品久久久久久| 欧美日韩国产中文| 丝袜a∨在线一区二区三区不卡| 欧美日韩在线电影| 亚洲福利电影网| 欧美日韩精品电影| 丝瓜av网站精品一区二区| 7878成人国产在线观看| 美女高潮久久久| 91精品国产综合久久香蕉麻豆| 午夜欧美一区二区三区在线播放| 欧美日韩亚洲综合在线 | 日韩电影在线一区二区| 欧美精品精品一区| 日韩精品高清不卡| 欧美v国产在线一区二区三区| 精品一二三四区| 亚洲精品一线二线三线无人区| 久久av老司机精品网站导航| 久久久久国产精品免费免费搜索| 高清不卡在线观看| 日韩理论片在线| 欧美日韩高清一区二区三区| 蜜桃精品视频在线| 久久亚洲影视婷婷| 99国产精品一区| 亚洲超碰精品一区二区| 日韩一区二区精品在线观看| 狠狠色丁香九九婷婷综合五月| 久久天堂av综合合色蜜桃网| 国产成人免费9x9x人网站视频| 日韩理论片一区二区| 欧美精品色综合| 久久狠狠亚洲综合| 国产欧美久久久精品影院| 91原创在线视频| 日韩在线一区二区| 久久精品水蜜桃av综合天堂| www.色综合.com| 视频在线观看一区二区三区| 久久综合久久综合久久| 成人污污视频在线观看| 亚洲成人自拍一区| 久久久激情视频| 欧美日韩视频在线第一区| 久久99国产精品免费| 国产精品电影院| 欧美精品粉嫩高潮一区二区| 国产高清在线精品| 亚洲成人福利片| 亚洲国产精品激情在线观看| 欧美日韩不卡一区| 成人黄色av电影| 秋霞影院一区二区| 1000精品久久久久久久久| 91精品国产综合久久久久久| 处破女av一区二区| 免费精品99久久国产综合精品| 亚洲色图欧美偷拍| 亚洲精品一线二线三线无人区| 在线精品亚洲一区二区不卡| 国产精品 欧美精品| 日本免费在线视频不卡一不卡二 | 成人h动漫精品| 青娱乐精品在线视频| 最新国产成人在线观看| 欧美精品一区二区三区蜜臀| 欧美日韩国产首页在线观看| 白白色亚洲国产精品| 国产一区二区女|