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

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

?? sh_sci_serial.c

?? eCos1.31版
?? C
?? 第 1 頁 / 共 2 頁
字號:
//==========================================================================////      io/serial/sh/sh_sci_serial.c////      SH Serial SCI I/O Interface Module (interrupt driven)////==========================================================================//####COPYRIGHTBEGIN####//                                                                          // -------------------------------------------                              // The contents of this file are subject to the Red Hat eCos Public License // Version 1.1 (the "License"); you may not use this file except in         // compliance with the License.  You may obtain a copy of the License at    // http://www.redhat.com/                                                   //                                                                          // Software distributed under the License is distributed on an "AS IS"      // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the // License for the specific language governing rights and limitations under // the License.                                                             //                                                                          // The Original Code is eCos - Embedded Configurable Operating System,      // released September 30, 1998.                                             //                                                                          // The Initial Developer of the Original Code is Red Hat.                   // Portions created by Red Hat are                                          // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             // All Rights Reserved.                                                     // -------------------------------------------                              //                                                                          //####COPYRIGHTEND####//==========================================================================//#####DESCRIPTIONBEGIN####//// Author(s):   jskov// Contributors:gthomas, jskov// Date:        1999-05-24// Purpose:     SH Serial I/O module (interrupt driven version)// Description: //// Note: Since interrupt sources from the same SCI channel share the same//       interrupt level, there is no risk of races when altering the//       channel's control register from ISRs and DSRs. However, when //       altering the control register from user-level code, interrupts//       must be disabled while the register is being accessed.//// FIXME: Receiving in polled mode prevents duplex transfers from working for//        some reason.//####DESCRIPTIONEND####//==========================================================================#include <pkgconf/io_serial.h>#include <pkgconf/io.h>#include <cyg/io/io.h>#include <cyg/hal/hal_intr.h>#include <cyg/io/devtab.h>#include <cyg/infra/diag.h>#include <cyg/io/serial.h>#include <cyg/hal/sh_regs.h>#ifdef CYGPKG_IO_SERIAL_SH_EDK7708#define __CYGPKG_IO_SERIAL_SH_SCI_INL "sh_sci_7708.inl"#endif// Only compile driver if an inline file with driver details was selected.#ifdef __CYGPKG_IO_SERIAL_SH_SCI_INLstatic short select_word_length[] = {    -1,    -1,    CYGARC_REG_SCSMR_CHR,               // 7 bits    0                                   // 8 bits};static short select_stop_bits[] = {    -1,    0,                                  // 1 stop bit    -1,    CYGARC_REG_SCSMR_STOP               // 2 stop bits};static short select_parity[] = {    0,                                  // No parity    CYGARC_REG_SCSMR_PE,                // Even parity    CYGARC_REG_SCSMR_PE|CYGARC_REG_SCSMR_OE, // Odd parity    -1,    -1};static unsigned short select_baud[] = {    0,    // Unused    0, // 50    0,    // 75    0, // 110    0,    // 134.5    0, // 150    0,    // 200    0,  // 300    0,  // 600    0,  // 1200    0,    // 1800    0,   // 2400    0,    // 3600    0,   // 4800    0,   // 7200    CYGARC_REG_CKSx_9600<<8|CYGARC_REG_SCBRR_9600,   // 9600    CYGARC_REG_CKSx_14400<<8|CYGARC_REG_SCBRR_14400,   // 14400    CYGARC_REG_CKSx_19200<<8|CYGARC_REG_SCBRR_19200,   // 19200    CYGARC_REG_CKSx_38400<<8|CYGARC_REG_SCBRR_38400, // 38400    CYGARC_REG_CKSx_57600<<8|CYGARC_REG_SCBRR_57600,    // 57600    CYGARC_REG_CKSx_115200<<8|CYGARC_REG_SCBRR_115200,    // 115200    0,    // 230400};typedef struct sh_sci_info {    CYG_ADDRWORD   data;                // Pointer to data register        CYG_WORD       er_int_num,          // Error interrupt number                   rx_int_num,          // Receive interrupt number                   tx_int_num;          // Transmit interrupt number    CYG_ADDRWORD   ctrl_base;           // Base address of SCI controller    cyg_interrupt  serial_er_interrupt,                    serial_rx_interrupt,                    serial_tx_interrupt;    cyg_handle_t   serial_er_interrupt_handle,                    serial_rx_interrupt_handle,                    serial_tx_interrupt_handle;    bool           tx_enabled;} sh_sci_info;static bool sh_serial_init(struct cyg_devtab_entry *tab);static bool sh_serial_putc(serial_channel *chan, unsigned char c);static Cyg_ErrNo sh_serial_lookup(struct cyg_devtab_entry **tab,                                    struct cyg_devtab_entry *sub_tab,                                   const char *name);static unsigned char sh_serial_getc(serial_channel *chan);static bool sh_serial_set_config(serial_channel *chan, cyg_serial_info_t *config);static void sh_serial_start_xmit(serial_channel *chan);static void sh_serial_stop_xmit(serial_channel *chan);static cyg_uint32 sh_serial_tx_ISR(cyg_vector_t vector, cyg_addrword_t data);static void       sh_serial_tx_DSR(cyg_vector_t vector, cyg_ucount32 count,                                    cyg_addrword_t data);static cyg_uint32 sh_serial_rx_ISR(cyg_vector_t vector, cyg_addrword_t data);static void       sh_serial_rx_DSR(cyg_vector_t vector, cyg_ucount32 count,                                    cyg_addrword_t data);static cyg_uint32 sh_serial_er_ISR(cyg_vector_t vector, cyg_addrword_t data);static void       sh_serial_er_DSR(cyg_vector_t vector, cyg_ucount32 count,                                    cyg_addrword_t data);static SERIAL_FUNS(sh_serial_funs,                    sh_serial_putc,                    sh_serial_getc,                   sh_serial_set_config,                   sh_serial_start_xmit,                   sh_serial_stop_xmit    );#include __CYGPKG_IO_SERIAL_SH_SCI_INL// Internal function to actually configure the hardware to desired baud rate,// etc.static boolsh_serial_config_port(serial_channel *chan, cyg_serial_info_t *new_config,                       bool init){    cyg_uint16 baud_divisor = select_baud[new_config->baud];    sh_sci_info *sh_chan = (sh_sci_info *)chan->dev_priv;    cyg_uint8 _scr, _smr;    // Check configuration request    if ((-1 == select_word_length[(new_config->word_length -                                  CYGNUM_SERIAL_WORD_LENGTH_5)])        || -1 == select_stop_bits[new_config->stop]        || -1 == select_parity[new_config->parity]        || baud_divisor == 0)        return false;    // Disable SCI interrupts while changing hardware    HAL_READ_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr);    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSCR, 0);    // Set databits, stopbits and parity.    _smr = select_word_length[(new_config->word_length -                               CYGNUM_SERIAL_WORD_LENGTH_5)] |         select_stop_bits[new_config->stop] |        select_parity[new_config->parity];    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSMR, _smr);    // Set baud rate.    _smr &= ~CYGARC_REG_SCSMR_CKSx_MASK;    _smr |= baud_divisor >> 8;    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSMR, _smr);    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCBRR, baud_divisor & 0xff);    // Clear the status register.    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSSR, 0);    if (init) {        // Always enable transmitter and receiver.        _scr = CYGARC_REG_SCSCR_TE | CYGARC_REG_SCSCR_RE;        if (chan->out_cbuf.len != 0)            _scr |= CYGARC_REG_SCSCR_TIE; // enable tx interrupts        if (chan->in_cbuf.len != 0)            _scr |= CYGARC_REG_SCSCR_RIE; // enable rx interrupts    }         HAL_WRITE_UINT8(sh_chan->ctrl_base+SCI_SCSCR, _scr);    if (new_config != &chan->config) {        chan->config = *new_config;    }    return true;}// Function to initialize the device.  Called at bootstrap time.static bool sh_serial_init(struct cyg_devtab_entry *tab){    serial_channel *chan = (serial_channel *)tab->priv;    sh_sci_info *sh_chan = (sh_sci_info *)chan->dev_priv;#ifdef CYGDBG_IO_INIT    diag_printf("SH SERIAL init - dev: %x.%d\n",                 sh_chan->data, sh_chan->rx_int_num);#endif    // Really only required for interrupt driven devices    (chan->callbacks->serial_init)(chan);    if (chan->out_cbuf.len != 0) {        cyg_drv_interrupt_create(sh_chan->tx_int_num,                                 3,                                 (cyg_addrword_t)chan, // Data item passed to interrupt handler                                 sh_serial_tx_ISR,                                 sh_serial_tx_DSR,                                 &sh_chan->serial_tx_interrupt_handle,                                 &sh_chan->serial_tx_interrupt);        cyg_drv_interrupt_attach(sh_chan->serial_tx_interrupt_handle);        cyg_drv_interrupt_unmask(sh_chan->tx_int_num);        sh_chan->tx_enabled = false;    }    if (chan->in_cbuf.len != 0) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲捆绑美女| 久久综合999| 94-欧美-setu| 成人免费观看视频| 99re6这里只有精品视频在线观看| 国产一区亚洲一区| 狠狠狠色丁香婷婷综合激情| 日韩国产精品91| 捆绑变态av一区二区三区| 日本不卡视频在线观看| 久久 天天综合| 国产一区二区三区高清播放| 成熟亚洲日本毛茸茸凸凹| 成人免费精品视频| 在线观看亚洲a| 911国产精品| 26uuu另类欧美亚洲曰本| 欧美国产精品久久| 夜夜嗨av一区二区三区中文字幕| 亚洲一二三区不卡| 久久精品免费看| 成人av电影在线网| 欧美日韩www| 精品动漫一区二区三区在线观看| 26uuu另类欧美| 一区二区在线免费| 美女国产一区二区三区| 丰满少妇久久久久久久| 欧美三区在线观看| xvideos.蜜桃一区二区| 亚洲免费三区一区二区| 日韩高清一区在线| 不卡视频免费播放| 欧美老肥妇做.爰bbww| 久久精品人人做人人爽97| 亚洲免费观看在线观看| 精品一区二区三区日韩| 色综合色狠狠天天综合色| 欧美一区欧美二区| 亚洲三级小视频| 久久国产精品99久久久久久老狼| 99久久免费视频.com| 精品粉嫩超白一线天av| 亚洲第一成人在线| 成人免费毛片app| 欧美tickling网站挠脚心| 亚洲激情第一区| 国产99一区视频免费| 欧美美女一区二区三区| 亚洲日本丝袜连裤袜办公室| 黄色精品一二区| 91精品国产黑色紧身裤美女| ...xxx性欧美| 国产精品小仙女| 精品免费一区二区三区| 日本美女一区二区三区视频| 91福利在线播放| 一区精品在线播放| 成人做爰69片免费看网站| 欧美xxx久久| 日本91福利区| 欧美一区2区视频在线观看| 一区二区三区**美女毛片| 99久久精品免费精品国产| 欧美激情在线一区二区| 国产东北露脸精品视频| 精品1区2区在线观看| 久久精品国产色蜜蜜麻豆| 日韩亚洲欧美高清| 日日摸夜夜添夜夜添精品视频| 色综合久久久久网| 一区二区三区不卡视频在线观看| 不卡的av中国片| 中文字幕制服丝袜成人av| 不卡高清视频专区| 亚洲欧美日韩中文字幕一区二区三区| 国产福利91精品一区二区三区| 国产亚洲va综合人人澡精品| 国产毛片精品国产一区二区三区| 久久免费看少妇高潮| 国产乱码精品一品二品| 欧美国产精品v| 色综合天天在线| 一区二区三区91| 欧美电影一区二区| 九色综合狠狠综合久久| 国产日韩欧美综合在线| av一区二区三区黑人| 亚洲自拍偷拍av| 日韩欧美在线影院| 精品一区二区久久久| 国产色一区二区| 色婷婷av一区二区三区之一色屋| 亚洲午夜久久久久久久久电影网| 欧美日韩国产美女| 毛片不卡一区二区| 国产精品每日更新| 欧美日韩亚洲综合在线 | 国产精品18久久久| 亚洲欧美综合色| 欧美日韩精品一区二区三区蜜桃 | 日韩欧美国产电影| 国产宾馆实践打屁股91| 亚洲少妇屁股交4| 欧美一区二区三区电影| 国产成人无遮挡在线视频| 亚洲色大成网站www久久九九| 91精品在线一区二区| 东方aⅴ免费观看久久av| 亚洲香肠在线观看| 久久女同互慰一区二区三区| 在线免费观看成人短视频| 久久成人久久爱| 亚洲精品视频在线| 国产午夜精品一区二区三区视频| 在线观看一区不卡| 国产精品自拍一区| 日韩av在线播放中文字幕| 一区在线中文字幕| 精品成a人在线观看| 欧美三片在线视频观看| 成a人片亚洲日本久久| 久久99精品一区二区三区三区| 一区二区三区在线高清| 国产日韩欧美不卡| 欧美大片在线观看一区二区| 91久久精品一区二区二区| 国产黄色成人av| 麻豆91精品91久久久的内涵| 亚洲免费高清视频在线| 中文字幕中文字幕中文字幕亚洲无线 | 欧美精品一区二| 欧美精品自拍偷拍| 色诱视频网站一区| 99精品视频在线观看免费| 风间由美一区二区av101| 韩国av一区二区三区四区| 秋霞午夜鲁丝一区二区老狼| 亚洲一区精品在线| 一区二区三区在线视频观看| 国产精品―色哟哟| 亚洲国产高清在线| 精品国产凹凸成av人网站| 日韩欧美国产系列| 91精品国产综合久久久久| 欧美亚男人的天堂| 色成年激情久久综合| 99精品欧美一区二区三区小说| 成人天堂资源www在线| 国产suv一区二区三区88区| 国产综合久久久久影院| 国精产品一区一区三区mba桃花 | 亚洲第四色夜色| 亚洲一区av在线| 亚洲成人一二三| 丝袜诱惑亚洲看片| 美女视频网站久久| 久久国产精品区| 懂色av一区二区夜夜嗨| 成人开心网精品视频| 99国产精品国产精品毛片| 一本久道中文字幕精品亚洲嫩| 9i在线看片成人免费| 91传媒视频在线播放| 欧美性大战xxxxx久久久| 在线不卡免费av| 精品日韩欧美一区二区| 欧美精彩视频一区二区三区| 亚洲欧美中日韩| 亚洲午夜电影在线| 蜜臀av性久久久久蜜臀aⅴ| 国模套图日韩精品一区二区| 成人蜜臀av电影| 在线观看日韩一区| 91麻豆精品国产91久久久使用方法 | 精品一区二区三区免费视频| 成人精品视频一区二区三区| 欧美亚洲综合网| 亚洲精品一区在线观看| 中文字幕在线观看一区| 香蕉乱码成人久久天堂爱免费| 日本美女视频一区二区| 成人综合日日夜夜| 欧美日韩激情在线| 久久久久国产一区二区三区四区| 亚洲柠檬福利资源导航| 久久99精品国产麻豆婷婷| 成人激情小说网站| 欧美一级国产精品| 亚洲日本丝袜连裤袜办公室| 麻豆国产一区二区| 欧美亚洲自拍偷拍| 国产欧美日韩麻豆91| 亚洲国产精品精华液网站| 国产精品12区| 日韩欧美激情一区| 一区二区三区精品在线观看| 国产一区二区0| 91麻豆精品国产91久久久久久久久 | 678五月天丁香亚洲综合网|