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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区二区| 国产精品66部| 欧美日韩三级一区| 欧美aa在线视频| 欧美精品一区视频| 狠狠色狠狠色合久久伊人| 精品国产三级电影在线观看| 国产又粗又猛又爽又黄91精品| 精品国产三级电影在线观看| 国产v日产∨综合v精品视频| 国产精品伦一区二区三级视频| 99re成人在线| 亚洲午夜私人影院| 日韩欧美国产系列| 国产69精品一区二区亚洲孕妇| 自拍偷拍亚洲激情| 欧美精品三级日韩久久| 极品少妇一区二区三区精品视频| 国产女主播视频一区二区| 91女人视频在线观看| 五月天视频一区| 欧美激情一区在线| 欧美日韩成人高清| 国产成人综合网站| 亚洲成人动漫在线免费观看| 精品国产污网站| 色猫猫国产区一区二在线视频| 天堂va蜜桃一区二区三区| 国产日韩视频一区二区三区| 91久久国产综合久久| 激情综合色综合久久综合| 最近日韩中文字幕| 日韩欧美久久久| 一本大道久久a久久综合婷婷 | 一区二区三区精密机械公司| 日韩一区二区在线观看视频播放| 国产成人av电影在线播放| 亚洲一区二区三区在线| 国产婷婷一区二区| 国产成人三级在线观看| 一区二区激情小说| 久久久久综合网| 欧美色视频在线观看| 国产成人亚洲综合a∨婷婷| 午夜精品久久久久久久久久| 亚洲国产精品传媒在线观看| 日韩欧美一区在线| 精品视频免费在线| 99精品视频在线免费观看| 国产又粗又猛又爽又黄91精品| 亚洲国产精品一区二区久久| 国产精品美女久久久久aⅴ国产馆| 欧美精品三级日韩久久| 91极品视觉盛宴| 99在线视频精品| 国产精品99久久久久久有的能看| 午夜精品久久久久久久| 专区另类欧美日韩| 久久精品亚洲乱码伦伦中文 | 日韩视频123| 欧美午夜电影一区| 91免费在线视频观看| 成人av综合一区| 国产精品自在在线| 六月婷婷色综合| 天天色天天爱天天射综合| 亚洲制服丝袜av| 亚洲视频免费看| 国产精品蜜臀在线观看| 国产日产欧美精品一区二区三区| 日韩精品一区二区三区在线播放 | 日韩免费在线观看| 欧美高清视频在线高清观看mv色露露十八 | 精品国产sm最大网站| 91麻豆精品国产| 欧美日韩www| 日韩一区二区精品| 欧美一区二区三区在线看| 欧美日韩精品欧美日韩精品 | 成人不卡免费av| 国产成都精品91一区二区三| 粉嫩av亚洲一区二区图片| 国产不卡在线一区| 不卡av在线免费观看| 91网站在线播放| 91美女在线视频| 欧美性一级生活| 91精品国产91久久久久久最新毛片| 欧美日韩精品一区二区三区蜜桃| 欧美女孩性生活视频| 在线成人小视频| 精品国产免费一区二区三区四区 | 欧美日韩精品欧美日韩精品一综合| 精品污污网站免费看| 777xxx欧美| 久久综合狠狠综合| 国产精品无圣光一区二区| 综合久久给合久久狠狠狠97色| 亚洲一区在线看| 日本伊人午夜精品| 国产不卡视频在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 91国模大尺度私拍在线视频| 欧美高清你懂得| 欧美精品一区男女天堂| 国产精品超碰97尤物18| 亚洲第一狼人社区| 狠狠色狠狠色合久久伊人| 91丨porny丨中文| 欧美一区二区啪啪| 欧美经典一区二区| 亚洲bdsm女犯bdsm网站| 精东粉嫩av免费一区二区三区| 不卡视频一二三| 欧美福利一区二区| 久久久精品国产免费观看同学| 亚洲欧美偷拍卡通变态| 天天做天天摸天天爽国产一区| 国产精品一二三区在线| 在线观看免费一区| 久久一区二区三区四区| 亚洲精品ww久久久久久p站| 久久99国产精品免费网站| av在线不卡观看免费观看| 欧美男人的天堂一二区| 国产精品午夜春色av| 免费不卡在线观看| 91福利资源站| 欧美国产综合一区二区| 日韩不卡一区二区三区| 91丨九色丨尤物| 2024国产精品| 亚洲成人免费电影| 国产精品一区免费在线观看| 欧美图区在线视频| 国产精品国产三级国产a| 欧美aaaaaa午夜精品| 91激情五月电影| 国产精品午夜久久| 国产一区二区不卡在线| 欧美精品久久一区| 亚洲精品中文在线| 高潮精品一区videoshd| 精品免费国产二区三区| 亚洲成人精品在线观看| 97超碰欧美中文字幕| 久久噜噜亚洲综合| 久久99蜜桃精品| 欧美日韩国产影片| 艳妇臀荡乳欲伦亚洲一区| 丁香六月综合激情| 久久伊人蜜桃av一区二区| 免费一区二区视频| 欧美欧美欧美欧美| 性欧美大战久久久久久久久| 91亚洲男人天堂| 国产精品国产三级国产| 成人精品在线视频观看| 国产视频一区二区在线| 韩国一区二区三区| www国产成人免费观看视频 深夜成人网| 人人爽香蕉精品| 91精品国产综合久久香蕉麻豆| 亚洲成人1区2区| 欧美视频在线播放| 亚洲成人动漫精品| 欧美丰满美乳xxx高潮www| 日韩av电影免费观看高清完整版| 欧美精品丝袜中出| 蜜臀av性久久久久av蜜臀妖精| 91精品国产福利在线观看| 美女性感视频久久| 亚洲国产精品综合小说图片区| 91精彩视频在线观看| 亚洲第一搞黄网站| 日韩一区二区三| 国产精品自拍毛片| 中文字幕乱码一区二区免费| 成人精品视频.| 亚洲精品大片www| 欧美精选午夜久久久乱码6080| 日韩在线观看一区二区| 精品日韩在线观看| 懂色一区二区三区免费观看| 国产精品久久久久影院色老大| 色菇凉天天综合网| 日韩二区三区在线观看| 精品美女被调教视频大全网站| 国产精品小仙女| 亚洲免费三区一区二区| 欧美日韩精品一二三区| 精品一区二区三区视频| 国产日韩欧美精品在线| 色综合视频在线观看| 午夜精品一区二区三区电影天堂| 精品久久久久av影院 | 在线免费观看不卡av| 日韩av中文字幕一区二区三区| 精品国精品国产尤物美女| 国产成人日日夜夜|