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

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

?? uart.c

?? TL16C752 串口擴展芯片驅動 VDSP 環境
?? C
字號:
#include "uart.h"

/***************************************************************************/
/*  ======== UART_rset ========								   */
/*  Set a UART register,設置寄存器										   */
/***************************************************************************/
void UART_rset(Int16 regnum,Int16 regval)
{
    Int16 regindex, lcr;
    
    /* Register index is determined by lower 3 bits and the target UART */
    
    //regindex = regnum & 0x7;
//    if (hUart == 1)
//        regindex += 8;
    /*是否為高位的寄存器*/
    /* If regnum between 0x08 and 0x0F, set bit 7 of LCR to access register */
    //if ((regnum & 0x18) == 0x8)
    if((regnum >= 0x10) && (regnum <= 0x1e))
    {
        lcr = rget(TL_UART_LCR);
        waitusec(1);
        rset(TL_UART_LCR, lcr | 0x80);
        waitusec(1);
        rset(regnum, regval);
        waitusec(1);
        rset(TL_UART_LCR, lcr);
        waitusec(1);
    }
    else
    {
        
        rset(regnum, regval);
        waitusec(1);
    }
}

/**********************************************************************/
/*  ======== UART_rget ========							  */
/*  Get the value of a UART register,讀出寄存器的值					  */
/**********************************************************************/
Int16 UART_rget(Int16 regnum)
{
    Int16 regindex, returnval, lcr;
    
    /* Register index is determined by lower 3 bits and the target UART */
    //regindex = regnum & 0x7;
//    if (hUart == 1)
//        regindex += 8;
    
    /* If regnum between 0x08 and 0x0F, set bit 7 of LCR to access register */
    //if ((regnum & 0x18) == 0x8)
    if((regnum >= 0x10) && (regnum <= 0x1e))
    {
        lcr = rget(TL_UART_LCR);
        rset(TL_UART_LCR, lcr | 0x80);
        returnval = rget(regnum);
        rset(TL_UART_LCR, lcr);
    }
    else
    {
        returnval = rget(regnum);
    }
    
    return returnval;
}

/**************************************************************************/
/*  ======== UART_open ========                                 */
/*  Initialize UART and return handle									  */
/*	描述:打開相應的串口,并進行相應的配置								  */
/*	輸入參數:														      */
/*		devid:	選擇UART的通路											  */
/*		baudrate: 選擇正確的波待率										  */
/*	    config:   其它配置其它的參數組									  */
/**************************************************************************/
void UART_open(Int16 baudrate,UART_Config *config)
{
//    UART_Handle hUart;
    //Int16 dl;
    Int8 dl,test;
    /* Assign handle */
//    hUart = devid;
    
    /* Set registers based on config structure */

    /*設置MCR*/
    UART_rset(TL_UART_MCR,config -> regs[3]);
    //test = UART_rget(TL_UART_MCR);
    /*將EFR寄存器的第4位關閉*/
    dl = UART_rget(TL_UART_EFR);
    UART_rset(TL_UART_EFR, dl & 0xEF);
    //test = UART_rget(TL_UART_EFR);
    
    /*設置串口的MCR*/
    UART_rset(TL_UART_MCR, config -> regs[3]);
    //test = UART_rget(TL_UART_MCR);
    
    /*設置串口的IER*/
    UART_rset(TL_UART_IER, config -> regs[0]);
    //test = UART_rget(TL_UART_IER);
    /*設置串口的FCR*/
    UART_rset(TL_UART_FCR, config -> regs[1]);
    //test = UART_rget(TL_UART_FCR);	
    /*設置串口的LCR*/
    UART_rset(TL_UART_LCR, config -> regs[2]);
    //test = UART_rget(TL_UART_LCR);

    /* Set up baud divisor clock,設置波待率 */
    dl = UART_rget(TL_UART_MCR);
    if((dl & 0x80)==0x80)
    {
    	baudrate = (baudrate/4);	
    }
    //UART_rset(TL_UART_DLL, baudrate & 0xff);
    UART_rset(TL_UART_DLL, 0x50);
    dl = UART_rget(TL_UART_DLL);
    //UART_rset(TL_UART_DLH, (baudrate >> 8) & 0xff);
    UART_rset(TL_UART_DLH, 0x00);
    dl = UART_rget(TL_UART_DLH);
    /* Clear any outstanding receive characters,清空接收寄存器 */
    UART_rget(TL_UART_RBR);
    
//    return hUart;
}

/*********************************************************************/
/*  ======== UART_getChar ========							 */
/*  Get one character of data from the UART,讀取數據			     */
/*********************************************************************/
Int16 UART_getChar(void)
{
    Int16 status;
    
    while(1)
    {
        status = UART_rget(TL_UART_LSR);
        if ((status & 1) != 0)  // DR
            break;
    }
    
    return 
    	UART_rget(TL_UART_RBR);
}

/*********************************************************************/
/*  ======== UART_putChar ========				     		 */
/*  Send one character of data to the UART,發送一個數據			     */
/*********************************************************************/
void UART_putChar(Uint16 data)
{
    Int16 status;
    
    while(1)
    {
        status = UART_rget(TL_UART_LSR);
        if ((status & 0x20) != 0)  // THRE
            break;
    }
//    SEEDDM642_waitusec(3);    
    UART_rset(TL_UART_THR, data);

}

void UART_puts(const char *s)
{
	while (*s) {
		UART_putChar(*s++);
	}
}

/* Spin in a delay loop for delay iterations */
void wait(Uint32 delay)
{
    volatile Uint32 i, n;
    
    n = 0;
    for (i = 0; i < delay; i++)
    {
        n = n + 1;
    }
}

/* Spin in a delay loop for delay microseconds */
void waitusec(Uint32 delay)
{
    wait(delay * 21);
}

Uint8 rget(Int16 regnum)
{
    Uint8 *pdata;
    
    /* Return lower 8 bits of register */
    pdata = (Uint8 *)(UART_BASE + regnum);
    return (*pdata & 0xff);
}

void rset(Int16 regnum, Uint8 regval)
{
    Uint8 *pdata;
    
    /* Write lower 8 bits of register */
    pdata = (Uint8 *)(UART_BASE + regnum);
    *pdata = (regval & 0xff);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区免费| 韩日欧美一区二区三区| 日本午夜一本久久久综合| 国模娜娜一区二区三区| 日本二三区不卡| 欧美成人精品1314www| 亚洲人成网站色在线观看| 免费成人在线播放| 欧美性xxxxxx少妇| 国产精品全国免费观看高清| 奇米影视7777精品一区二区| 色哟哟精品一区| 久久精品男人天堂av| 免费精品视频在线| 欧美亚洲日本一区| 日韩毛片高清在线播放| 国产毛片精品一区| 日韩一区二区三区电影| 日本不卡的三区四区五区| 91网址在线看| 国产日韩av一区| 人人超碰91尤物精品国产| 在线观看一区不卡| 最近中文字幕一区二区三区| 国产成人午夜电影网| 日韩欧美国产午夜精品| 日日夜夜一区二区| 欧美日韩一本到| 亚洲尤物视频在线| 日本乱码高清不卡字幕| 136国产福利精品导航| 岛国精品在线观看| 日本一区二区三区久久久久久久久不| 美腿丝袜亚洲三区| 欧美一区二区视频在线观看| 午夜精品一区二区三区免费视频 | 国产大陆精品国产| 日韩免费看网站| 久久电影国产免费久久电影| 欧美一区二区三区视频免费| 日韩电影一区二区三区| 欧美一区二区精美| 青娱乐精品在线视频| 欧美三级视频在线| 日韩精品1区2区3区| 91精品国产一区二区三区香蕉| 亚洲成人激情av| 欧美剧情片在线观看| 日韩经典中文字幕一区| 91精品国产高清一区二区三区| 日韩高清一区在线| 欧美成人性战久久| 国产传媒欧美日韩成人| 国产精品天天看| 色吧成人激情小说| av爱爱亚洲一区| 一区二区三区中文在线| 9191国产精品| 韩国三级电影一区二区| 国产精品久久三区| 欧美在线免费播放| 免费高清不卡av| 国产日韩欧美麻豆| 在线观看亚洲a| 蜜臀av一区二区| 亚洲国产成人在线| 欧美亚洲高清一区二区三区不卡| 偷窥少妇高潮呻吟av久久免费| 精品久久久久久久一区二区蜜臀| 国产精品99久久久久久有的能看| 国产精品的网站| 欧美日韩精品是欧美日韩精品| 精品一区在线看| 国产精品久久久一本精品| 欧美日韩高清一区| 国产精品123| 亚洲亚洲精品在线观看| 欧美精品一区二区三区很污很色的| 成人高清免费观看| 午夜精品福利一区二区三区av| 国产日韩欧美精品在线| 欧美日韩成人一区二区| 成人精品在线视频观看| 三级一区在线视频先锋| 国产精品欧美久久久久无广告| 欧美日韩国产美| 99热99精品| 久久国内精品自在自线400部| 国产精品久久夜| 精品国产乱码久久久久久久久 | 欧美一级欧美三级| 波多野结衣中文字幕一区| 美女网站一区二区| 亚洲另类中文字| 欧美韩国日本不卡| 91精品国产一区二区三区蜜臀| 不卡的av在线播放| 国产在线精品免费| 青青草原综合久久大伊人精品 | 欧美极品美女视频| 日韩午夜精品电影| 欧美猛男男办公室激情| 色综合久久久久综合99| 国产91露脸合集magnet| 久久国产精品色婷婷| 三级一区在线视频先锋 | 欧美tickling挠脚心丨vk| 欧美三级电影网站| 在线亚洲高清视频| 91在线播放网址| 97久久精品人人做人人爽50路| 经典三级视频一区| 麻豆久久久久久| 秋霞午夜av一区二区三区| 香港成人在线视频| 亚洲va韩国va欧美va| 亚洲午夜久久久久久久久久久 | 欧美日韩国产综合视频在线观看| 99久久伊人网影院| 97精品视频在线观看自产线路二| 成人综合婷婷国产精品久久免费| 国产精品白丝jk白祙喷水网站| 国产尤物一区二区在线| 国内精品写真在线观看| 国产一区二区伦理| 国产乱国产乱300精品| 国产呦精品一区二区三区网站 | 亚洲成人免费av| 午夜精品国产更新| 日韩va亚洲va欧美va久久| 免费观看一级欧美片| 免费成人在线观看视频| 国产麻豆视频一区二区| 成人深夜福利app| 91麻豆国产精品久久| 91国内精品野花午夜精品| 欧美日韩免费高清一区色橹橹| 精品视频在线免费看| 日韩一区二区三区在线视频| 精品美女在线播放| 国产精品不卡在线| 亚洲网友自拍偷拍| 美女一区二区久久| 成人性生交大片免费看在线播放| 99v久久综合狠狠综合久久| 日本二三区不卡| 日韩精品一区二区三区蜜臀| 欧美国产成人在线| 一区二区激情视频| 精品一区二区影视| 99久久伊人网影院| 91精品国产综合久久久蜜臀图片| 日韩精品自拍偷拍| 中文字幕一区二区三区视频| 亚洲成av人**亚洲成av**| 久久国内精品自在自线400部| 欧美日韩一区二区在线视频| 日韩欧美三级在线| 国产精品国产自产拍高清av王其| 亚洲国产美女搞黄色| 国产麻豆午夜三级精品| 欧美性感一类影片在线播放| 国产天堂亚洲国产碰碰| 亚洲一区二区在线免费看| 国内欧美视频一区二区 | 精品视频在线免费观看| 久久亚洲影视婷婷| 亚洲国产精品一区二区www | 亚洲一区二区视频| 国产在线精品一区二区三区不卡 | 在线观看网站黄不卡| 亚洲精品一区二区三区99| 一区二区三区中文字幕精品精品| 久久99久久99| 欧美三级中文字幕在线观看| 国产精品五月天| 老汉av免费一区二区三区| 欧美在线观看18| 国产精品福利影院| 激情久久五月天| 欧美精品在欧美一区二区少妇| 国产精品不卡一区| 国产美女一区二区| 欧美mv和日韩mv国产网站| 亚洲综合一区二区三区| 成人精品小蝌蚪| 国产网红主播福利一区二区| 久久成人综合网| 欧美一区二区三区视频在线| 亚洲午夜av在线| 色丁香久综合在线久综合在线观看| 久久久蜜臀国产一区二区| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩一区三区| 亚洲一区二区三区美女| 色吊一区二区三区| 一区二区成人在线| 色系网站成人免费| 亚洲特黄一级片| eeuss影院一区二区三区|