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

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

?? sci.c

?? ucosII在TMS320LF2407成功移植的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
*               channel.  The function will wait for the buffer to empty out if the buffer is full.
*               The function returns to your application if the buffer doesn't empty within the specified
*               timeout.  A timeout value of 0 means that the calling function will wait forever for the
*               buffer to empty out.  The character to send is first inserted into the Tx buffer and will
*               be sent by the Tx ISR.  If this is the first character placed into the buffer, the Tx ISR
*               will be enabled.
* Arguments   : 'c'     is the character to send.
*                    'to'    is the timeout (in clock ticks) to wait in case the buffer is full.  If you
*                     specify a timeout of 0, the function will wait forever for the buffer to empty.
* Returns     : COMM_NO_ERR      if the character was placed in the Tx buffer
*               COMM_TX_TIMEOUT  if the buffer didn't empty within the specified timeout period
*********************************************************************************************************
*/
 
INT8U  CommPutChar ( INT8U c, INT16U to)
{
    INT8U          oserr;
    COMM_RING_BUF *pbuf;
	
     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  */
        CommTxIntEn(); 
        CommTxIntTrigger();                     /* Yes, Enable and trigger Tx interrupts  */
    }
    OS_EXIT_CRITICAL();
    return (COMM_NO_ERR);
	
}

#else   /* In Singletasking mode */
/*
*********************************************************************************************************
*                                            OUTPUT CHARACTER
*                                          ( In Singletasking mode )
*
* Description : This function is called by your application to send a character on the communications
*               channel.  The character to send is first inserted into the Tx buffer and will be sent by
*               the Tx ISR.  If this is the first character placed into the buffer, the Tx ISR will be
*               enabled.  If the Tx buffer is full, the character will not be sent (i.e. it will be lost)
* Arguments   :  'c'     is the character to send.
* Returns     : COMM_NO_ERR   if the function was successful (the buffer was not full)
*                   COMM_TX_FULL  if the buffer was full
*********************************************************************************************************
*/

INT8U  CommPutChar ( INT8U c)
{
    COMM_RING_BUF *pbuf;

     pbuf = &CommBuf;
    OS_ENTER_CRITICAL();
    if (pbuf->RingBufTxCtr < COMM_TX_BUF_SIZE) {           /* See if buffer is full   */
        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  */
            CommTxIntEn(); 
	        CommTxIntTrigger();                              /* Yes, Enable and trigger Tx interrupts  */
            OS_EXIT_CRITICAL();
        } else {
            OS_EXIT_CRITICAL();
        }
        return (COMM_NO_ERR);
    } else {
        OS_EXIT_CRITICAL();
        return (COMM_TX_FULL);
    }
}

#endif	

/*
*********************************************************************************************************
*                                    INSERT CHARACTER INTO RING BUFFER
*
*
* Description : This function is called by the Rx ISR to insert a character into the receive ring buffer.
* Arguments   :  'c'     is the character to insert into the ring buffer.  If the buffer is full, the
*                       character will not be inserted, it will be lost.
*********************************************************************************************************
*/

void  CommPutRxChar (INT8U c)
{
    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];
        }
#if MULTITASK == 1
        OSSemPost(pbuf->RingBufRxSem);                     /* Indicate that character was received     */
#endif
    }
}

/*
*********************************************************************************************************
*                                            CONFIGURE PORT
*
* Description : This function is used to configure a serial I/O port.  This code is for IBM-PCs and
*               compatibles and assumes a National Semiconductor NS16450.
*
* Arguments   :  'baud'        is the desired baud rate (anything, standard rates or not)
*                      'bits'        defines the number of bits used and can be either 5, 6, 7 or 8.
*                      'parity'      specifies the 'parity' to use:
*                                 COMM_PARITY_NONE
*                                 COMM_PARITY_ODD
*                                 COMM_PARITY_EVEN
*                      'stops'       defines the number of stop bits used and can be either 1 or 2.
*                      'rx_priority' is the priority of rx interrupt:
*                                HIGH_PRIORITY  (INT1)
*                                LOW_PRIORITY   (INT5)
*                      'tx_priority' is the priority of rx interrupt:
*                                HIGH_PRIORITY  (INT1)
*                                LOW_PRIORITY   (INT5)
*
* Returns     : COMM_NO_ERR   if the channel has been configured.
*********************************************************************************************************
*/
INT8U  CommCfgPort ( INT16U baud, INT8U bits, INT8U parity, INT8U stops,INT8U rx_priority,INT8U tx_priority)
{
    INT16U  div;                                      /* Baud rate divisor                             */
    INT8U   divlo;
    INT8U   divhi;
    INT8U   ccr;                                      /* Communication Control Register                         */

    div   = (INT16U)(5000000L / (INT32U)baud-1);      /* Compute divisor for desired baud rate         */
    divlo =  div & 0x00FF;                            /* Split divisor into LOW and HIGH bytes         */
    divhi = (div >> 8) & 0x00FF;
    ccr   = ((stops - 1) << 7) + (bits - 1);
    switch (parity) 
	{
        case COMM_PARITY_ODD: 
            ccr |= 0x20;                             /* Odd  parity   */
             break;
        case COMM_PARITY_EVEN: 
             ccr |= 0x60;                             /* Even parity   */
             break;
	case COMM_PARITY_NONE:            /* Even none-parity   */
		break;
        }
	
	*sciccr=ccr;
	*scilbaud=divlo;
	*scihbaud=divhi;
	switch (rx_priority)
	  {
	   case HIGH_PRIORITY: *scipri  &=~(0x20);break;
	   case LOW_PRIORITY: *scipri  |=(0x20);break;
	  }
	switch (tx_priority)
	  {
	   case HIGH_PRIORITY: *scipri  &=~(0x40);break;
	   case LOW_PRIORITY: *scipri  |=(0x40);break;
	  }
	*scictl1=0x03;
    *scictl2= 0x00;               /* Disable both Rx and Tx interrupts             */
    return (COMM_NO_ERR);
}

/*
*********************************************************************************************************
*                                         DISABLE RX INTERRUPTS
*
* Description : This function disables the Rx interrupt.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/

void  CommRxIntDis (void)
{
   
     *scictl2 &=~(0x02);       /* Disable Rx interrupts   */
                                                          
}


/*
*********************************************************************************************************
*                                          ENABLE RX INTERRUPTS
*
* Description : This function enables the Rx interrupt.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/

void  CommRxIntEn (void)
{
    *scictl2 |=(0x02); 
}

/*
*********************************************************************************************************
*                                          ENABLE TX INTERRUPTS
*
* Description : This function enables transmission of characters.  Transmission of characters is
*               interrupt driven.  
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/

void  CommTxIntEn(void)
{
    *scictl2 |=(0x01);
}


/*
*********************************************************************************************************
*                                         DISABLE TX INTERRUPTS
*
* Description : This function disables the character transmission.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/

void  CommTxIntDis (void)
{
    *scictl2 &=~(0x01);
}

/*
*********************************************************************************************************
*                                         TRIGGER TX INTERRUPTS
*
* Description : This function is used to trigger a Tx interrupt.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/
static void CommTxIntTrigger(void)
{
   *scitxbuf='';
}

/*
*********************************************************************************************************
*                                         RX INTERRUPT SERVICE ROUTINE
*
* Description : This function is the Rx interrupt service routine. The function gets the character from the Rx Buffer register and
*                    inserts it into Rx ring buffer.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/
void CommRxISR(void)
{
      INT8U   c;
      c  = (INT8U)(*scirxbuf);   /* Process received character                */
      CommPutRxChar(c);        /* Insert received character into buffer   */
}

/*
*********************************************************************************************************
*                                          TX INTERRUPT SERVICE ROUTINE
*
* Description : This function is the Tx interrupt service routine. The function gets the character from the Tx ring buffer and puts
*                    it into Tx buffer register.
* Arguments   : void
* Returns:  void
*********************************************************************************************************
*/
void CommTxISR(void)
{
     INT8U c;
     INT8U err;
     c = CommGetTxChar(&err);             /* Get next character to send.   */
      if (err == COMM_TX_EMPTY)         /* Do we have anymore characters to send ?  */
	  {                                                
            CommTxIntDis();                 /* No,  Disable Tx interrupts   */
           } 
       else 
	   {
              *scitxbuf= c;       /* Yes, Send character   */
          }
	   
}

/*
************************************************************************************
                                                    END OF SCI.C
************************************************************************************
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区18| 韩国理伦片一区二区三区在线播放| 粉嫩欧美一区二区三区高清影视| 久久久亚洲精品一区二区三区 | 精品国产一区二区亚洲人成毛片| 日产国产高清一区二区三区| 国产精品伊人色| 日韩一级大片在线观看| 国产一区二区三区四区五区入口 | 久久电影网站中文字幕| 日韩欧美第一区| 国产夫妻精品视频| 国产精品美女久久久久久久久久久| 91影视在线播放| 日韩激情av在线| 国产三级精品三级| 在线中文字幕不卡| 韩国精品一区二区| √…a在线天堂一区| 欧美精品九九99久久| 国产一区在线观看麻豆| 亚洲日本韩国一区| 91精品综合久久久久久| 国产成人免费9x9x人网站视频| 国产精品久久久久久久久果冻传媒| 在线区一区二视频| 国产传媒欧美日韩成人| 一区二区三区影院| 久久免费看少妇高潮| 在线观看国产日韩| 国产福利精品导航| 免费观看一级欧美片| 专区另类欧美日韩| 日韩精品中文字幕在线不卡尤物| 床上的激情91.| 美女性感视频久久| 亚洲品质自拍视频| 国产人成亚洲第一网站在线播放| 欧美专区在线观看一区| 成人性生交大片免费看视频在线| 日韩高清电影一区| 亚洲精品视频在线观看网站| 精品欧美乱码久久久久久1区2区| 色美美综合视频| 国产精品77777| 日本伊人色综合网| 亚洲另类色综合网站| 国产欧美日韩另类一区| 欧美mv日韩mv| 欧美伦理电影网| 欧美中文字幕一区二区三区亚洲| 国产精品538一区二区在线| 五月激情综合色| 一区二区三区在线免费视频| 国产调教视频一区| 日韩欧美中文一区二区| 欧美亚洲图片小说| 91视频免费看| 成人激情黄色小说| 国产91色综合久久免费分享| 久久精品国内一区二区三区| 首页国产丝袜综合| 亚洲高清久久久| 亚洲永久免费视频| 1024精品合集| 国产精品久久久一本精品| 久久精品欧美一区二区三区不卡| 欧美成人性福生活免费看| 91麻豆精品国产| 3d动漫精品啪啪1区2区免费| 欧美日韩中文字幕一区| 欧美日韩午夜影院| 欧美亚洲图片小说| 欧洲激情一区二区| 欧亚一区二区三区| 欧日韩精品视频| 欧美日韩高清一区| 91精品在线一区二区| 欧美一卡二卡三卡| 日韩一二三区不卡| 日韩午夜电影av| 久久亚洲春色中文字幕久久久| 精品国产乱码91久久久久久网站| 欧美成人r级一区二区三区| 精品国产99国产精品| 久久精品人人做人人综合| 国产精品久久久久久妇女6080| 欧美国产日韩精品免费观看| 国产精品美女久久福利网站| 亚洲色图色小说| 亚洲高清视频在线| 麻豆成人91精品二区三区| 久久se精品一区二区| 成人小视频免费在线观看| 99国产精品久久| 在线成人高清不卡| 精品国产一区二区三区av性色| 国产视频911| 亚洲特级片在线| 日韩福利电影在线| 国产精品18久久久久久久久久久久 | 日韩国产成人精品| 久久99精品一区二区三区三区| 国产精品白丝jk黑袜喷水| 99久久婷婷国产| 7777精品伊人久久久大香线蕉的| 精品久久久久一区| 国产欧美视频在线观看| 亚洲精品少妇30p| 美腿丝袜亚洲综合| 成人午夜在线免费| 欧美精品在线一区二区三区| 久久一区二区三区四区| 亚洲人成小说网站色在线| 日本不卡视频在线| 成人免费观看av| 欧美日韩成人综合在线一区二区| 精品国产露脸精彩对白| 亚洲精品菠萝久久久久久久| 日韩影视精彩在线| 国产成人啪免费观看软件| 91国偷自产一区二区三区成为亚洲经典 | 国产福利一区二区三区在线视频| 91视频在线观看免费| 日韩欧美一区二区三区在线| 国产精品九色蝌蚪自拍| 美女尤物国产一区| 色香色香欲天天天影视综合网| 日韩欧美一级二级三级久久久| 亚洲天堂网中文字| 国产综合色在线| 欧美日韩国产综合草草| 中文字幕免费不卡| 麻豆成人在线观看| 在线成人免费视频| 亚洲视频网在线直播| 精品中文字幕一区二区| 在线观看日韩电影| 国产精品久久久久久久久图文区| 日本成人在线看| 色88888久久久久久影院按摩| 精品国产乱码久久久久久久| 亚洲大片一区二区三区| 97久久超碰国产精品电影| 久久亚洲一级片| 奇米亚洲午夜久久精品| 在线亚洲免费视频| 亚洲日本一区二区三区| 国产乱妇无码大片在线观看| 欧美美女bb生活片| 亚洲狠狠爱一区二区三区| 99久久免费国产| 亚洲国产精品av| 国产成人亚洲精品狼色在线| 日韩美女一区二区三区四区| 午夜久久久久久久久| 欧美老女人在线| 亚洲欧美国产毛片在线| 成熟亚洲日本毛茸茸凸凹| 精品久久久久久无| 久久99精品久久久久久久久久久久| 在线观看欧美日本| 亚洲影院在线观看| 欧美中文字幕一区| 亚洲午夜久久久久久久久久久 | 在线播放欧美女士性生活| 一区二区在线看| 在线观看国产日韩| 亚洲国产精品久久人人爱| 欧美综合天天夜夜久久| 亚洲一区二区欧美日韩| 欧美日韩你懂得| 亚洲国产aⅴ成人精品无吗| 欧美性猛片xxxx免费看久爱| 一区二区三区中文字幕| 在线观看亚洲精品| 亚洲成人黄色影院| 制服丝袜中文字幕亚洲| 美腿丝袜在线亚洲一区| 久久综合网色—综合色88| 国产综合成人久久大片91| 久久综合精品国产一区二区三区| 春色校园综合激情亚洲| 国产精品成人免费在线| 日本韩国欧美一区| 亚洲444eee在线观看| 8x福利精品第一导航| 久久精品国产精品青草| 久久九九久精品国产免费直播| 成人国产亚洲欧美成人综合网| 亚洲免费观看高清完整版在线| 欧美日韩国产天堂| 九九久久精品视频| 国产精品天美传媒| 91久久精品日日躁夜夜躁欧美| 午夜视频久久久久久| 欧美本精品男人aⅴ天堂| 粉嫩嫩av羞羞动漫久久久| 亚洲精品少妇30p| 精品日韩在线观看|