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

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

?? uart.c

?? 是一個手機功能的模擬程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
    SYS_UWORD32 chars_in_tx_fifo;
    SYS_UWORD32 chars_written;
    t_uart      *uart;
    
    chars_written = 0;
    uart = &(uart_parameter[uart_id]);

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Disable sleep mode.
     */
              
    WRITE_UART_REGISTER (
        uart, IER, READ_UART_REGISTER (uart, IER) & ~IER_SLEEP);
#endif

    /*
     * Copy the input buffer to the TX FIFO.
     * Ulyssse Bug #44: TX FIFO full status bit (SSR[1]) is corrupted during
     * one period of Bclock => Workaround S/W.
     * Write in TX FIFO only if FIFO is empty instead of writing in TX FIFO
     * while FIFO is not full.
     */ 

    if (READ_UART_REGISTER (uart, LSR) & THRE) {

        chars_in_tx_fifo = 0;

        while ((chars_written < chars_to_write) &&
		       (chars_in_tx_fifo < FIFO_SIZE)) {

            WRITE_UART_REGISTER (uart, THR, *(buffer++));
            chars_written++;
            chars_in_tx_fifo++;
        }
    }

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Re-enable sleep mode.
     */

    WRITE_UART_REGISTER ( 
        uart, IER, READ_UART_REGISTER (uart, IER) | IER_SLEEP);
#endif

    return (chars_written);
}


/*******************************************************************************
 *
 *                           UA_EncapsulateNChars
 * 
 * Purpose  : Writes N characters in the TX FIFO in encapsulating them with 2
 *            STX bytes (one at the beginning and one at the end).
 *
 * Arguments: In : uart_id       : UART id.
 *                 buffer        : buffer address from which characters are
 *                                 written.
 *                 chars_to_write: number of chars to write.
 *            Out: none
 *
 * Returns  : Number of chars written.
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

SYS_UWORD32
UA_EncapsulateNChars (T_tr_UartId uart_id,
                      char *buffer,
                      SYS_UWORD32 chars_to_write)
{
    SYS_UWORD32 chars_written;
    SYS_UWORD32 chars_in_tx_fifo;
    t_uart      *uart;
    
    chars_written = 0;
    uart = &(uart_parameter[uart_id]);

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Disable sleep mode.
     */
              
    WRITE_UART_REGISTER (
        uart, IER, READ_UART_REGISTER (uart, IER) & ~IER_SLEEP);
#endif

    /*
     * Copy the input buffer to the TX FIFO.
     * Ulyssse Bug #44: TX FIFO full status bit (SSR[1]) is corrupted during
     * one period of Bclock => Workaround S/W.
     * Write in TX FIFO only if FIFO is empty instead of writing in TX FIFO
     * while FIFO is not full.
     */ 

    if (READ_UART_REGISTER (uart, LSR) & THRE) {

        chars_in_tx_fifo = 0;

        /*
         * Check if the message has been already encapsulated.
         */

        if (!uart->encapsulation_flag) {
            /*
             * Write STX in the TX FIFO and set the flag.
             */

            WRITE_UART_REGISTER (uart, THR, STX);
            chars_in_tx_fifo++;
            uart->encapsulation_flag = 1;
        }

        /*
         * Keep one char margin in the TX FIFO for the last STX.
         */

        while ((chars_written < chars_to_write) &&
               (chars_in_tx_fifo < (FIFO_SIZE-1))) {

            WRITE_UART_REGISTER (uart, THR, *(buffer++));
            chars_written++;
            chars_in_tx_fifo++;
        }

        /*
         * Append STX byte at the end if the frame is complete.
         */

        if (chars_written == chars_to_write) {

            /*
             * Write STX in the TX FIFO and reset the flag.
             */

            WRITE_UART_REGISTER (uart, THR, STX);
            uart->encapsulation_flag = 0;
        }
    }

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Re-enable sleep mode.
     */

    WRITE_UART_REGISTER ( 
        uart, IER, READ_UART_REGISTER (uart, IER) | IER_SLEEP);
#endif

    return (chars_written);
}


/*******************************************************************************
 *
 *                           UA_WriteNBytes
 * 
 * Purpose  : Writes N bytes in the TX FIFO in encapsulating with 2 STX bytes
 *            at the beginning and the end of the frame, and in making byte
 *            stuffing.
 *
 * Arguments: In : uart_id       : UART id.
 *                 buffer        : buffer address from which bytes are
 *                                 written.
 *                 bytes_to_write: number of bytes to write.
 *            Out: none
 *
 * Returns  : Number of bytes written.
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

SYS_UWORD32
UA_WriteNBytes (T_tr_UartId uart_id,
                SYS_UWORD8 *buffer,
                SYS_UWORD32 bytes_to_write)
{
    SYS_UWORD32 bytes_written;
    SYS_UWORD32 bytes_in_tx_fifo;
    t_uart      *uart;
        
    bytes_written = 0;
    uart = &(uart_parameter[uart_id]);

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Disable sleep mode.
     */
              
    WRITE_UART_REGISTER (
        uart, IER, READ_UART_REGISTER (uart, IER) & ~IER_SLEEP);
#endif

    /*
     * Copy the input buffer to the TX FIFO.
     * Ulyssse Bug #44: TX FIFO full status bit (SSR[1]) is corrupted during
     * one period of Bclock => Workaround S/W.
     * Write in TX FIFO only if FIFO is empty instead of writing in TX FIFO
     * while FIFO is not full.
     */ 

    if (READ_UART_REGISTER (uart, LSR) & THRE) {

        bytes_in_tx_fifo = 0;

        /*
         * Check if the message has been already encapsulated.
         */

        if (!uart->encapsulation_flag) {

            /*
             * Write STX in the TX FIFO and set the flag.
             */

            WRITE_UART_REGISTER (uart, THR, STX);
            bytes_in_tx_fifo++;
            uart->encapsulation_flag = 1;
        }

        /*
         * Keep 2 chars margin in the FIFO, one for the stuffing (if necessary)
         * and one for the last STX.
         */

        while ((bytes_written < bytes_to_write) && 
               (bytes_in_tx_fifo < (FIFO_SIZE-2))) {

            /*
             * Check for STX or DLE in order to perform the stuffing.
             */

            if ((*(buffer) == STX) || (*(buffer) == DLE)) {

                /*
                 * Write DLE in the TX FIFO.
                 */

                WRITE_UART_REGISTER (uart, THR, DLE);
                bytes_in_tx_fifo++;
            }

            WRITE_UART_REGISTER (uart, THR, *(buffer++));
            bytes_written++;
            bytes_in_tx_fifo++;
        }

        /*
         * Append STX byte at the end if the frame is complete.
         */

        if (bytes_written == bytes_to_write) {

            /*
             * Write STX in the TX FIFO and reset the flag.
             */

            WRITE_UART_REGISTER (uart, THR, STX);
            uart->encapsulation_flag = 0;
        }
    }

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Re-enable sleep mode.
     */

    WRITE_UART_REGISTER ( 
        uart, IER, READ_UART_REGISTER (uart, IER) | IER_SLEEP);
#endif

    return (bytes_written);
}


/*******************************************************************************
 *
 *                            UA_WriteChar
 * 
 * Purpose  : Writes a character in the TX FIFO.
 *
 * Arguments: In : uart: UART id.
 *                 character
 *            Out: none
 *
 * Returns  : none
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

void
UA_WriteChar (T_tr_UartId uart_id,
              char character)
{
    (void) UA_WriteNChars (uart_id, &character, 1);
}

/*******************************************************************************
 *
 *                          UA_WriteString
 * 
 * Purpose  : Writes a null terminated string in the TX FIFO.
 *
 * Arguments: In : uart_id: UART id.
 *                 buffer : buffer address from which characters are written.
 *            Out: none
 *
 * Returns  : none
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

void
UA_WriteString (T_tr_UartId uart_id,
                char *buffer)
{
    (void) UA_WriteNChars (uart_id, buffer, strlen (buffer));
}

/*******************************************************************************
 *
 *                             UA_EnterSleep
 * 
 * Purpose  : Checks if UART is ready to enter Deep Sleep. If ready, enables
 *            wake-up interrupt.
 *
 * Arguments: In : uart_id : UART id.
 *            Out: none
 *
 * Returns: 0	 : Deep Sleep is not possible.
 *          >= 1 : Deep Sleep is possible.
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

SYS_BOOL
UA_EnterSleep (T_tr_UartId uart_id)
{
    t_uart              *uart;
    SYS_BOOL            deep_sleep;
    volatile SYS_UWORD8 status;
        
    uart = &(uart_parameter[uart_id]);
    deep_sleep = 0;

    /*
     * Check if RX & TX FIFOs are both empty
     */

    status = READ_UART_REGISTER (uart, LSR);

    if (!(status & DR) &&
        (status & TEMT)) {

#if ((CHIPSET != 5) && (CHIPSET != 6))
        /*
         * Disable sleep mode.
         */
              
        WRITE_UART_REGISTER (
            uart, IER, READ_UART_REGISTER (uart, IER) & ~IER_SLEEP);
#endif

        /*
         * Mask RX interrupt.
         */

        WRITE_UART_REGISTER (
            uart, IER, READ_UART_REGISTER (uart, IER) & ~ERBI);

        /*
         * Enable the wake-up interrupt.
         */

        ENABLE_WAKEUP_INTERRUPT (uart);

        deep_sleep = 1;
    }

    return (deep_sleep);
}

/*******************************************************************************
 *
 *                              UA_WakeUp
 * 
 * Purpose  : Wakes up UART after Deep Sleep.
 *
 * Arguments: In : uart_id : UART id.
 *            Out: none
 *
 * Returns: none
 *
 * Warning: Parameters are not verified.
 *
 ******************************************************************************/

void
UA_WakeUp (T_tr_UartId uart_id)
{
    t_uart *uart;
       
    uart = &(uart_parameter[uart_id]);

    /*
     * Disable the wake-up interrupt.
     */

    DISABLE_WAKEUP_INTERRUPT (uart);

    /*
     * Unmask RX interrupts.
     */

    WRITE_UART_REGISTER (
        uart, IER, READ_UART_REGISTER (uart, IER) | ERBI);

#if ((CHIPSET != 5) && (CHIPSET != 6))
    /*
     * Allow sleep mode.
     */

    WRITE_UART_REGISTER ( 
        uart, IER, READ_UART_REGISTER (uart, IER) | IER_SLEEP);
#endif
}

/*******************************************************************************
 *
 *                       UA_InterruptHandler
 * 
 * Purpose  : Interrupt handler.
 *
 * Arguments: In : uart_id         : origin of interrupt
 *                 interrupt_status: source of interrupt
 *            Out: none
 *
 * Returns  : none
 *
 ******************************************************************************/

void
UA_InterruptHandler (T_tr_UartId uart_id,
                     SYS_UWORD8 interrupt_status)
{
    t_uart *uart;
   
    uart = &(uart_parameter[uart_id]);

    switch (interrupt_status) {

        case RX_DATA:

            read_rx_fifo (uart);

        break;

        default:

            /* No Processing */

        break;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91热门视频在线观看| 香蕉久久夜色精品国产使用方法| 88在线观看91蜜桃国自产| 成人永久免费视频| 国产精品无遮挡| 国产亚洲综合av| 中文字幕免费在线观看视频一区| 国产午夜三级一区二区三| 久久久91精品国产一区二区三区| 国产午夜精品一区二区三区四区| 国产三级久久久| 中文字幕一区二区不卡| 亚洲精品国产精品乱码不99| 亚洲免费伊人电影| 亚洲成av人在线观看| 蜜桃av一区二区三区电影| 久久成人羞羞网站| 成人性视频网站| 欧美色综合网站| 日韩欧美国产一二三区| 国产91丝袜在线18| 91美女在线视频| 91精品国产综合久久精品图片| 日韩欧美自拍偷拍| 国产精品婷婷午夜在线观看| 一区二区三区免费在线观看| 奇米色777欧美一区二区| 粉嫩av一区二区三区| 精品视频在线视频| 久久青草国产手机看片福利盒子 | 欧美日本一道本在线视频| 欧美男男青年gay1069videost| ww久久中文字幕| 亚洲自拍与偷拍| 国产精品996| 欧美人与禽zozo性伦| 国产午夜亚洲精品午夜鲁丝片 | 亚洲男人电影天堂| 欧美一级高清片| 欧美激情中文字幕一区二区| 亚洲444eee在线观看| 韩国精品久久久| 欧美私人免费视频| 欧美激情自拍偷拍| 久久爱另类一区二区小说| 一本久久精品一区二区| 337p日本欧洲亚洲大胆精品| 一区二区三区鲁丝不卡| 国产999精品久久久久久绿帽| 欧美精品18+| 91亚洲午夜精品久久久久久| 欧美成人性福生活免费看| 一区二区三区四区在线播放| 国产成人丝袜美腿| 欧美成人精品福利| 亚洲一区影音先锋| 97久久超碰国产精品| 国产日韩欧美制服另类| 美女一区二区在线观看| 欧美精品在线观看播放| 樱花影视一区二区| 日本韩国欧美在线| 亚洲视频在线观看三级| 不卡视频在线观看| 91浏览器打开| 亚洲欧美激情在线| 91农村精品一区二区在线| 亚洲国产成人一区二区三区| 国产一区二区调教| 久久五月婷婷丁香社区| 久久超碰97人人做人人爱| 欧美成人a在线| 久久精品av麻豆的观看方式| 日韩欧美国产三级电影视频| 麻豆91小视频| 精品国产百合女同互慰| 久久丁香综合五月国产三级网站| 日韩女同互慰一区二区| 美女一区二区久久| 韩国在线一区二区| 久久婷婷国产综合国色天香| 国产999精品久久久久久绿帽| 国产精品污www在线观看| 91啪亚洲精品| 亚洲aaa精品| 精品处破学生在线二十三| 国产精品中文有码| 国产精品沙发午睡系列990531| 99国产精品国产精品久久| 亚洲女爱视频在线| 91精品国产麻豆| 国产精品欧美一区喷水| 一本色道久久综合精品竹菊| 亚洲成av人片www| 精品福利一区二区三区免费视频| 国产成人高清视频| 亚洲欧美日韩中文播放| 911精品国产一区二区在线| 久久66热re国产| 国产精品久久久久aaaa| 欧美日韩视频一区二区| 国产自产2019最新不卡| 亚洲人xxxx| 日韩免费高清视频| 99久久精品国产网站| 日韩国产欧美在线播放| 国产清纯在线一区二区www| 91黄色激情网站| 国产一区二区三区| 亚洲第一二三四区| 久久精品综合网| 欧美浪妇xxxx高跟鞋交| 不卡电影一区二区三区| 日韩在线一二三区| 国产精品久久久久影院色老大| 欧美老女人第四色| 99久久久无码国产精品| 久久精品国产免费| 亚洲成人综合网站| 国产精品久久99| 精品区一区二区| 欧美日韩情趣电影| 99国产麻豆精品| 国产久卡久卡久卡久卡视频精品| 亚洲va欧美va人人爽午夜| 国产精品久久久久久久久图文区 | 青青草精品视频| 亚洲欧美偷拍卡通变态| 久久精品欧美一区二区三区麻豆| 911精品产国品一二三产区| 91丨porny丨户外露出| 国产成人综合在线观看| 久久激情五月婷婷| 日本欧美肥老太交大片| 欧美日韩一卡二卡三卡 | 国产毛片精品国产一区二区三区| 欧美天堂一区二区三区| caoporn国产精品| 国产成人精品免费一区二区| 蜜桃视频在线一区| 强制捆绑调教一区二区| 亚洲午夜视频在线观看| 亚洲欧美视频在线观看视频| 中文字幕一区av| 亚洲天堂2014| 亚洲黄色尤物视频| 亚洲精品国产第一综合99久久 | 91麻豆精品国产91久久久久| 日本道精品一区二区三区| 91在线云播放| 色悠久久久久综合欧美99| av在线不卡观看免费观看| 波多野结衣中文字幕一区 | 一区二区三区免费网站| 亚洲欧美激情插| 在线观看视频一区| 欧美日韩一区二区在线视频| 欧美亚洲尤物久久| 欧美老年两性高潮| 日韩精品专区在线| 久久综合九色综合97婷婷| 欧美精品一区二区久久婷婷| 久久久精品免费免费| 国产精品私人自拍| 亚洲日本在线视频观看| 夜夜嗨av一区二区三区四季av| 亚洲一区二区三区免费视频| 亚洲成av人在线观看| 经典三级一区二区| 成人久久18免费网站麻豆| 色综合久久久久久久久| 欧美人妖巨大在线| 国产亚洲一区二区三区| 最好看的中文字幕久久| 婷婷中文字幕综合| 久久精品免费观看| fc2成人免费人成在线观看播放 | 91久久精品一区二区三| 欧美一区午夜精品| 国产婷婷色一区二区三区在线| 国产精品国产三级国产普通话99| 亚洲制服丝袜一区| 国产一区二区三区免费观看| 色综合天天综合色综合av | 欧美mv日韩mv国产网站app| 国产婷婷一区二区| 亚洲成人午夜电影| 国产不卡视频一区二区三区| 欧美在线小视频| 国产人妖乱国产精品人妖| 亚洲第一会所有码转帖| 成人ar影院免费观看视频| 欧美美女一区二区在线观看| 国产欧美精品一区二区色综合| 亚洲成人高清在线| 成人av在线资源| 久久在线观看免费| 亚洲国产成人av网| 不卡高清视频专区| 精品国产乱码久久久久久图片|