⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commrtos.c

📁 ucosii的源代码希望能给予学习嵌入式系统的朋友一定的帮助
💻 C
📖 第 1 页 / 共 2 页
字号:
        pbuf->RingBufTxCtr--;                              /* 抗, 单捞磐 墨款磐甫 皑家矫挪促           */
        c = *pbuf->RingBufTxOutPtr++;                      /* 滚欺俊辑 单捞磐甫 佬绰促                 */
        if (pbuf->RingBufTxOutPtr == &pbuf->RingBufTx[COMM_TX_BUF_SIZE]) {     /* 器牢磐 版拌 贸府     */
            pbuf->RingBufTxOutPtr = &pbuf->RingBufTx[0];
        }
        OSSemPost(pbuf->RingBufTxSem);                     /* 滚欺俊 茄俺狼 历厘康开捞 积板澜阑 舅赴促 */
        *err = COMM_NO_ERR;
        return (c);                                        /* 沥惑利栏肺 单捞磐甫 佬菌澜               */
    } else {
        *err = COMM_TX_EMPTY;
        return (NUL);                                      /* 滚欺啊 厚菌澜                            */
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                          烹脚葛碘 檬扁拳
*
*
* 汲疙        : 览侩橇肺弊伐篮 烹脚葛碘阑 檬扁拳 窍扁 困秦 捞 窃荐甫 龋免茄促.
*               烹脚葛碘狼 促弗 窃荐甫 龋免窍扁 傈俊 馆靛矫 捞 窃荐甫 刚历 龋免秦具 茄促.
* 傈崔牢磊    : 绝澜
*********************************************************************************************************
*/

void  CommInit (void)
{
    INT8U val;

    pbuf                  = &ComBuf;                       /* 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);

    /* Prevent other bits of ioc1 from being altered */ 
    wsr = 15;
    val = ioc1;
    wsr = 0;
    val |= 0x20;
    
    sp_con = 0x09;     /* mode1 & recieve enable */
    ioc1 = val;        /* select TxD */

    /* Baud rate must be written in the order of LSB first at the same address */
    baud_rate = ((unsigned char) BAUD_REG);
    baud_rate = ((unsigned char) (BAUD_REG >> 8));
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                       荐脚 滚欺啊 厚菌绰瘤 犬牢
*
*
* 汲疙        : 览侩橇肺弊伐篮 烹脚 盲澄俊 单捞磐啊 蜡瓤茄瘤 犬牢窍扁 困秦 捞 窃荐甫 龋免茄促.
*               茄 官捞飘 捞惑狼 单捞磐啊 蜡瓤窍搁 FALSE甫 府畔窍绊 弊犯瘤 臼篮 版快 TRUE甫 府畔茄促.
*
* 傈崔牢磊    : 'ch'    COMM 器飘 盲澄 锅龋. 促澜苞 鞍篮 蔼阑 爱绰促:
*                           COMM1
*                           COMM2
* 府畔蔼      : TRUE    滚欺啊 后 版快
*               FALSE   滚欺啊 厚瘤 臼绰 版快 肚绰 公瓤 盲澄阑 瘤沥茄 版快
*********************************************************************************************************
*/

BOOLEAN  CommIsEmpty (void)
{
    BOOLEAN        empty;

    OS_ENTER_CRITICAL();
    if (pbuf->RingBufRxCtr > 0) {                          /* 滚欺俊 单捞磐啊 乐绰啊?                  */
        empty = FALSE;                                     /* 滚欺啊 厚瘤 臼澜                         */
    } else {
        empty = TRUE;                                      /* 滚欺啊 厚菌澜                            */
    }
    OS_EXIT_CRITICAL();
    return (empty);
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                    价脚滚欺啊 肯傈洒 谩绰瘤 犬牢
*
*
* 汲疙        : 览侩橇肺弊伐篮 价脚滚欺俊 单捞磐甫 歹 历厘且 荐 乐绰瘤 犬牢窍扁 困秦 捞 窃荐甫 龋免茄促.
*               溜, 捞 窃荐绰 价脚滚欺啊 肯傈洒 谩绰瘤 犬牢茄促.
*               滚欺啊 蛮 版快 窃荐绰 TRUE甫 府畔窍绊 弊犯瘤 臼篮 版快绰 FALSE甫 府畔茄促.
* 傈崔牢磊    : 'ch'    COMM 器飘 盲澄 锅龋. 促澜苞 鞍篮 蔼阑 爱绰促:
*                           COMM1
*                           COMM2
* 府畔蔼      : TRUE    滚欺啊 肯傈洒 谩澜.
*               FALSE   滚欺啊 瞒瘤 臼疽芭唱 公瓤盲澄阑 瘤沥茄 版快.
*********************************************************************************************************
*/

BOOLEAN  CommIsFull (void)
{
    BOOLEAN        full;

    OS_ENTER_CRITICAL();
    if (pbuf->RingBufTxCtr < COMM_TX_BUF_SIZE) {           /* 滚欺啊 谩绰瘤 犬牢                       */
        full = FALSE;                                      /* 滚欺啊 瞒瘤 臼澜                         */
    } else {
        full = TRUE;                                       /* 滚欺啊 肯傈洒 谩澜                       */
    }
    OS_EXIT_CRITICAL();
    return (full);
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                              单捞磐 免仿
*
*
* 汲疙        : 捞 窃荐绰 烹脚盲澄肺 单捞磐甫 焊郴扁 困秦 龋免等促. 滚欺啊 肯傈洒 蛮 版快绰 滚欺啊 呼
*               锭鳖瘤 扁促赴促. 瘤沥茄 鸥烙酒眶捞 父丰瞪 锭鳖瘤 滚欺啊 厚瘤 臼栏搁 龋免窃荐肺 府畔茄促.
*               鸥烙酒眶阑 0栏肺 瘤沥窍搁 滚欺啊 呼 锭鳖瘤 康盔洒 扁促赴促.
*               啊厘 刚历 滚欺俊 历厘登绰 单捞磐啊 价脚 ISR俊 狼秦 傈价等促.
*               滚欺啊 肯傈洒 后 惑怕俊辑 霉 锅掳 单捞磐啊 滚欺俊 历厘瞪 锭 价脚 ISR捞 劝己拳 等促.
*
*
* 傈崔牢磊    : 'ch'    COMM 器飘 盲澄 锅龋. 促澜苞 鞍篮 蔼阑 爱绰促:
*                           COMM1
*                           COMM2
*               'c'     滚欺俊 历厘窍绊磊 窍绰 单捞磐.
*               'to'    滚欺啊 蛮 版快 呼 锭鳖瘤 扁促府档废 瘤沥窍绰 努钒 平 窜困狼 鸥烙酒眶 蔼.
*                       鸥烙酒眶栏肺 0阑 瘤沥窍搁 滚欺啊 呼 锭鳖瘤 康盔洒 扁促赴促.
* 府畔蔼      : COMM_NO_ERR      单捞磐啊 沥惑利栏肺 滚欺俊 历厘等 版快
*               COMM_TX_TIMEOUT  瘤沥等 鸥烙酒眶捞 父丰瞪 锭 鳖瘤 滚欺啊 厚瘤 臼篮 版快
*               COMM_BAD_CH      公瓤茄 盲澄 锅龋甫 瘤沥茄 版快
*********************************************************************************************************
*/

INT8U  CommPutChar (INT8U c, INT16U to)
{
    INT8U          oserr;

    OSSemPend(pbuf->RingBufTxSem, to, &oserr);             /* 价脚滚欺俊 后 傍埃捞 积扁辨 扁促赴促     */
    if (oserr == OS_TIMEOUT) {
        return (COMM_TX_TIMEOUT);                          /* 鸥烙酒眶 父丰凳, 俊矾内靛 府畔           */
    }
    OS_ENTER_CRITICAL();
    pbuf->RingBufTxCtr++;                                  /* 单捞磐 墨款磐甫 刘啊矫挪促               */
    *pbuf->RingBufTxInPtr++ = c;                           /* 滚欺俊 单捞磐甫 历厘茄促                 */
    if (pbuf->RingBufTxInPtr == &pbuf->RingBufTx[COMM_TX_BUF_SIZE]) {     /* 器牢磐 版拌 贸府          */
        pbuf->RingBufTxInPtr = &pbuf->RingBufTx[0];
    }
    if (pbuf->RingBufTxCtr == 1) {                         /* 霉 锅掳 单捞磐牢啊?                      */
        ipend1 |= 0x01;                                    /* 抗, 价脚 牢磐反飘 劝己拳                 */
    }
    OS_EXIT_CRITICAL();
    return (COMM_NO_ERR);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -