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

📄 commtest.c

📁 ucosii的源代码希望能给予学习嵌入式系统的朋友一定的帮助
💻 C
字号:
/*
*********************************************************************************************************
*                                     Embedded Systems Building Blocks
*                                  Complete and Ready-to-Use Modules in C
*
*                                    Asynchronous Serial Communications
*                                           Buffered Serial I/O 
*                                                 (RTOS)
*
*                            (c) Copyright 1999, Jean J. Labrosse, Weston, FL
*                                           All Rights Reserved
*
* Filename   : COMMTEST.C
* Programmer : Jean J. Labrosse
* Translated by : Won-Ho, Sung
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                               牢农风靛
*********************************************************************************************************
*/

#include "c:\\IC96\\Work\\ucos_ii\\includes.h"
#include "CommRtos.h"
/*$PAGE*/
/*
*********************************************************************************************************
*                                                 惑荐
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              单捞磐 鸥涝
*********************************************************************************************************
*/

typedef struct {
    INT16U     RingBufRxCtr;                /* Rx 傅 滚欺俊 历厘等 单捞磐 荐                           */
    OS_EVENT  *RingBufRxSem;                /* 荐脚 技付器绢狼 器牢磐                                  */
    INT8U     *RingBufRxInPtr;              /* 促澜 单捞磐甫 历厘且 镑阑 啊府虐绰 器牢磐               */ 
    INT8U     *RingBufRxOutPtr;             /* 促澜俊 佬绢哎 单捞磐甫 啊府虐绰 器牢磐                  */ 
    INT8U      RingBufRx[COMM_RX_BUF_SIZE]; /* 荐脚侩 傅 滚欺 历厘康开(Rx)                             */ 

    INT16U     RingBufTxCtr;                /* Tx 傅 滚欺俊 历厘等 单捞磐 荐                           */
    OS_EVENT  *RingBufTxSem;                /* 价脚 技付器绢狼 器牢磐                                  */
    INT8U     *RingBufTxInPtr;              /* 促澜 单捞磐甫 历厘且 镑阑 啊府虐绰 器牢磐               */
    INT8U     *RingBufTxOutPtr;             /* 促澜俊 佬绢哎 单捞磐甫 啊府虐绰 器牢磐                  */
    INT8U      RingBufTx[COMM_TX_BUF_SIZE]; /* 价脚侩 傅 滚欺 历厘康开(Tx)                             */

} COMM_RING_BUF;

OS_EVENT *P1Sem, *P2Sem, *P3Sem, *P4Sem;

/*
*********************************************************************************************************
*                                              傈开函荐
*********************************************************************************************************
*/

COMM_RING_BUF  ComBuf;
COMM_RING_BUF  *pbuf;

void RxIntHandler(void)
{
    INT8U c;

    c = sbuf;                                              /* Process received character               */

    switch(c)
    {
        case '1':
            OSSemPost(P1Sem);
        break;
        case '2':
            OSSemPost(P2Sem);
        break;
        case '3':
            OSSemPost(P3Sem);
        break;
        case '4':
            OSSemPost(P4Sem);
        break;
    }
}

void TxIntHandler(void)
{
}

/*$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);
    
    P1Sem = OSSemCreate(0);
    P2Sem = OSSemCreate(0);
    P3Sem = OSSemCreate(0);
    P4Sem = OSSemCreate(0);

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

⌨️ 快捷键说明

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