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

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

?? ti752.c

?? dm642網絡傳輸程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//--------------------------------------------------------------------------
// IP Stack
//--------------------------------------------------------------------------
// ti750.c - TI TLC16C750 Serial Port Driver with HDLC
//
// Author: Michael Denio
// Copyright 2001, 2003 by Texas Instruments, Inc.
//-------------------------------------------------------------------------
#include <std.h>
#include <sys.h>
#include <sem.h>
#include <hwi.h>
#include <c62.h>
#include <stkmain.h>
#include "llserial.h"
#include "ti752.h"

//
// We use the following direct access to registers
//
extern cregister volatile uint ICR;

//
// Declare our local functions
//
static void spInitialize( SDINFO *pi );
static void spStart( SDINFO *pi );
static void spStop( SDINFO *pi );
static void spIsr(SDINFO *pi);
static uint spWriteFifo( SDINFO *pi );

// Basic HDLC equates
#define HDLC_FLAGCHAR   0x7E    // Character to indicate frame boundary
#define HDLC_MINCHAR    0x20    // Minimum non-escaped char
#define HDLC_ESCCHAR    0x7D    // Character to indicate escape
#define HDLC_XORCHAR    0x20    // Escape XOR modifier

// FCS lookup table as calculated by the table generator.
#define PPPINITFCS16    0xffff  // Initial FCS value
#define PPPGOODFCS16    0xf0b8  // Good final FCS value
static const UINT16 fcstab[16] = {
   0x0000, 0x1081, 0x2102, 0x3183, 0x4204, 0x5285, 0x6306, 0x7387,
   0x8408, 0x9489, 0xA50A, 0xB58B, 0xC60C, 0xD68D, 0xE70E, 0xF78F
};

uint    SerRxGood=0,SerRxBadCRC=0;

//--------------------------------------------------------------------
// HwSerInit()
//
// Initialize serial environment and return instance count
//--------------------------------------------------------------------
uint HwSerInit()
{
    // EMIF control
    if( HW_CE_REG )
        *HW_CE_REG = HW_CE_VALUE;

#ifdef EVMDM642
    EVMDM642_OSD_init();
#endif

    return(2);
}

//--------------------------------------------------------------------
// HwSerShutdown()
//
// Shutdown Device Environment
//--------------------------------------------------------------------
void HwSerShutdown()
{
}

//--------------------------------------------------------------------
// HwSerOpen()
//
// Open Device Instance
//--------------------------------------------------------------------
uint HwSerOpen( SDINFO *pi )
{
    uint device;

    // Setup the base address
#ifdef EVMDM642
    if( !pi->PhysIdx )
    {
        pi->HwBaseAddr = ACE_PORT_BASE1;
        device = UARTA_IRQ;
    }
    else
    {
        pi->HwBaseAddr = ACE_PORT_BASE2;
        device = UARTB_IRQ;
    }
#endif

    // Attempt to reset the entire part
    spInitialize( pi );

    // Hook the interrupt
#ifdef EVMDM642
    EVMDM642_OSD_intHook( device, (EVMDM642_OSD_IntHandler)spIsr, pi );
#endif

    // Start
    spStart( pi );

    return(1);
}

//--------------------------------------------------------------------
// HwSerClose()
//
// Close Device Instance
//--------------------------------------------------------------------
void HwSerClose( SDINFO *pi )
{
    // Normally we'd shut off the part, but here we'll only
    // stop it. This is because it can't handle a soft reset.
    spStop( pi );
}

//--------------------------------------------------------------------
// HwSerSetConfig()
//
// Update hardware configuration
//--------------------------------------------------------------------
void HwSerSetConfig( SDINFO *pi )
{
    // Stop the part in preparation to re-initialize
    spStop( pi );

    // Attempt to reset the entire part
    spInitialize( pi );

    // Start
    spStart( pi );
}

//--------------------------------------------------------------------
// HwSerTxNext()
//
// Transmit Next Buffer on Tx Queue
//--------------------------------------------------------------------
void HwSerTxNext( SDINFO *pi )
{
    // Disable serial interrupts
    SREG(pi,UART_IER) = 0;

    if( !pi->TxFree )
    {
        SREG(pi,UART_IER) = TL16C752_IER_RX_AVAIL | TL16C752_IER_TX_READY;
        return;
    }

    pi->TxFree = 0;

    if( spWriteFifo( pi ) )
        SREG(pi,UART_IER) = TL16C752_IER_RX_AVAIL | TL16C752_IER_TX_READY;
    else
        SREG(pi,UART_IER) = TL16C752_IER_RX_AVAIL;
}

//--------------------------------------------------------------------
// HwSerPoll()
//
// Poll routine
//--------------------------------------------------------------------
void _HwSerPoll( SDINFO *pi,uint fTimerTick )
{
    (void)pi;
    (void)fTimerTick;
}

//--------------------------------------------------------------------
// spInitialize()
//
// Reset serial port and setup for operation
//--------------------------------------------------------------------
static void spInitialize( SDINFO *pi )
{
    uint        baudsetting;

    // Disable serial interrupts
    SREG(pi,UART_IER) = 0;

    // Calculate Baud setting based on BAUDRATENUM constant
    baudsetting = BAUDRATENUM / pi->Baud;

    // Set mode to baud latch enable and enable EFR
    SREG(pi,UART_LCR) = TL16C752_LCR_DLABEFR;

    // Set baud rate
    SREG(pi,UART_BRDL) = (UINT8)baudsetting;
    SREG(pi,UART_BRDH) = (UINT8)(baudsetting>>8);

    // Setup TX fifo trigger to 8 and RX fifo to 32
    SREG(pi,UART_EFR) = TL16C752_EFR_ENHANCE;
    SREG(pi,UART_TLR) = 0x82;  // 8*4=32 RX, 2*4=8 TX

    // Setup RX flow control in case its needed
    // Halt at 60, restore at 32
    SREG(pi,UART_TCR) = 0x8F;  // 8*4=32 Restore, 15*4=8 Halt

    // Enable FIFO, reset RX and TX
    SREG(pi,UART_FCR) = TL16C752_FCR_FIFO_ON |
                        TL16C752_FCR_RX_RESET | TL16C752_FCR_TX_RESET;

    // Set or disable flow control
    if( pi->FlowCtrl == HAL_SERIAL_FLOWCTRL_HARDWARE )
    {
        SREG(pi,UART_EFR) = TL16C752_EFR_ENHANCE |
                            TL16C752_EFR_RTSFLOW |
                            TL16C752_EFR_CTSFLOW;
        SREG(pi,UART_MCR) = TL16C752_MCR_IRQEN   |
                            TL16C752_MCR_DTR;
    }
    else
        SREG(pi,UART_MCR) = TL16C752_MCR_IRQEN   |
                            TL16C752_MCR_RTS     |
                            TL16C752_MCR_DTR;

    // Set mode (without latch enable)
    if( pi->Mode == HAL_SERIAL_MODE_7E1 )
        SREG(pi,UART_LCR) = 0x1a;      // 7E1
    else
        SREG(pi,UART_LCR) = 0x03;      // 8N1

    // Tansmitter is not free until we start
    pi->TxFree = 0;
}

//--------------------------------------------------------------------
// spStart()
//
// Start serial port Rx and Tx state machines
//--------------------------------------------------------------------
static void spStart( SDINFO *pi )
{
    // Enable RX and TX buffer interrupts
    SREG(pi,UART_IER) = TL16C752_IER_RX_AVAIL;
    pi->TxFree = 1;
}

//--------------------------------------------------------------------
// spStop()
//
// Stop serial port, abort current Rx and Tx
//--------------------------------------------------------------------
static void spStop( SDINFO *pi )
{
    // Disable serial interrupts
    SREG(pi,UART_IER) = 0;

    // Clear any pending interrupt
    ICR = HW_IFLAG;

    // Clear any waiting charmode data
    pi->CharReadIdx = pi->CharWriteIdx = pi->CharCount = 0;

    // Zap pending RX
    if( pi->hRxPend )
    {
        PBM_free( pi->hRxPend );
        pi->hRxPend = 0;
    }

    // Zap pending TX
    if( pi->hTxPend )
    {
        PBM_free( pi->hTxPend );
        pi->hTxPend = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产夜色精品鲁鲁99| 99久久综合狠狠综合久久| 精品亚洲aⅴ乱码一区二区三区| 日韩电影在线观看电影| 美女精品一区二区| 国产成人aaaa| 欧美日韩国产综合草草| 日韩一级高清毛片| 国产精品女主播av| 亚洲成人av中文| 国产毛片一区二区| 色诱亚洲精品久久久久久| 欧美一区午夜视频在线观看 | 国产精品不卡在线观看| 一区二区三区视频在线看| 精品亚洲成a人| 欧美亚洲国产一区二区三区| 欧美成人精品二区三区99精品| 国产拍欧美日韩视频二区| 亚洲成人av一区二区三区| 国产69精品久久久久777| 69av一区二区三区| 亚洲精选免费视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美日本韩国一区| 国产精品国产三级国产aⅴ原创 | 久久蜜桃av一区精品变态类天堂| 又紧又大又爽精品一区二区| 国内偷窥港台综合视频在线播放| 欧美性大战xxxxx久久久| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 中文在线免费一区三区高中清不卡| 奇米影视一区二区三区小说| 欧美视频在线一区二区三区| 亚洲图片你懂的| 成人av电影免费观看| 国产精品女人毛片| a亚洲天堂av| 国产精品电影一区二区| 成人精品亚洲人成在线| 国产精品免费人成网站| 粉嫩av亚洲一区二区图片| 国产亚洲午夜高清国产拍精品| 国产精品夜夜爽| 国产欧美日本一区二区三区| 国产一区在线精品| 国产欧美一区二区精品性色超碰| 国产在线精品一区在线观看麻豆| 精品成人一区二区| 韩国av一区二区| 综合久久久久综合| 91国产成人在线| 丝袜国产日韩另类美女| 欧美大片在线观看| 从欧美一区二区三区| 亚洲美女视频在线| 91麻豆精品国产91久久久资源速度| 秋霞电影一区二区| 国产精品你懂的在线欣赏| 一本一道综合狠狠老| 美女视频免费一区| 日韩毛片一二三区| 欧美精品黑人性xxxx| 成人美女视频在线观看18| 一区二区三区.www| 国产视频在线观看一区二区三区 | 亚洲第一搞黄网站| 国产亲近乱来精品视频| 欧美日韩在线综合| 国产传媒一区在线| 无码av免费一区二区三区试看 | 91丨porny丨在线| 久久精品久久综合| 亚洲综合免费观看高清在线观看| 日韩一级成人av| 欧美私人免费视频| www.久久精品| 狠狠色综合色综合网络| 亚洲午夜羞羞片| 亚洲色欲色欲www| 久久久久久久综合狠狠综合| 欧美福利一区二区| 色狠狠桃花综合| www.亚洲色图| 国产成人精品免费网站| 蜜臀va亚洲va欧美va天堂 | 欧美另类z0zxhd电影| 色94色欧美sute亚洲线路二| 成人一区在线观看| 国产精华液一区二区三区| 老司机免费视频一区二区| 处破女av一区二区| 精品一区二区综合| 韩国一区二区视频| 国产在线播放一区三区四| 久久精品99久久久| 久草中文综合在线| 激情综合网av| 国产经典欧美精品| 成人高清av在线| 一本到高清视频免费精品| 色婷婷久久99综合精品jk白丝| bt7086福利一区国产| 欧美午夜视频网站| 欧美一区二区三区四区高清| 欧美一区二区三区免费大片| 欧美一级艳片视频免费观看| 欧美成人性福生活免费看| 久久嫩草精品久久久久| 亚洲国产岛国毛片在线| 亚洲乱码国产乱码精品精可以看| 亚洲另类春色国产| 日本vs亚洲vs韩国一区三区| 麻豆精品久久久| www.亚洲色图.com| 欧美三级三级三级| 精品88久久久久88久久久 | 日韩不卡手机在线v区| 久久精品国产秦先生| 成人av动漫在线| 欧美美女一区二区| 日本一区二区三区在线观看| 亚洲免费av在线| 国产成人福利片| 欧美丝袜第三区| 国产精品免费视频网站| 青草国产精品久久久久久| 91在线播放网址| 欧美精品一区二区蜜臀亚洲| 一区二区三区精品久久久| 国产一区二区精品在线观看| 91成人在线免费观看| 中文乱码免费一区二区| 丁香婷婷综合五月| 欧美美女一区二区在线观看| 亚洲视频狠狠干| 国产老肥熟一区二区三区| 91精品免费在线| 亚洲国产另类av| 97se亚洲国产综合在线| 国产精品天美传媒| 精品一区二区三区免费| 在线成人av网站| 视频一区中文字幕国产| 在线观看欧美精品| 亚洲午夜久久久久久久久电影院| www.欧美精品一二区| 中文字幕一区二区不卡| 成人免费视频一区二区| 国产精品日韩成人| 99精品视频在线观看| 国产精品理论片在线观看| a美女胸又www黄视频久久| 国产精品午夜免费| 91丨porny丨蝌蚪视频| 亚洲少妇最新在线视频| 欧美手机在线视频| 看国产成人h片视频| 久久精品亚洲一区二区三区浴池| 懂色av一区二区夜夜嗨| 自拍偷拍国产亚洲| 欧美日韩一区二区三区四区| 免播放器亚洲一区| 精品福利一区二区三区| aaa亚洲精品一二三区| 亚洲精品久久久蜜桃| 欧美高清激情brazzers| 国产精品亚洲午夜一区二区三区| 17c精品麻豆一区二区免费| 一本大道av伊人久久综合| 日本中文字幕一区二区视频 | 91蝌蚪porny| 国产二区国产一区在线观看| 日韩三级伦理片妻子的秘密按摩| 视频一区二区中文字幕| 国产精品人成在线观看免费| 国产成人高清视频| 一区二区激情视频| 精品欧美一区二区在线观看| 国产精品一区一区| 亚洲午夜免费电影| 日本一区二区三区在线观看| 色综合天天狠狠| 国内偷窥港台综合视频在线播放| 亚洲欧美自拍偷拍色图| 在线成人高清不卡| 色一区在线观看| 成人免费视频播放| 午夜视频一区二区| 国产精品精品国产色婷婷| 日韩一区二区免费高清| 99久久综合精品| 成人av在线一区二区| 精品一二线国产| 日韩专区一卡二卡| 亚洲一区二区黄色| 亚洲欧美另类小说| 国产精品国产a| 中文字幕av一区二区三区| 日韩免费观看高清完整版在线观看|