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

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

?? sngks32csio-old.c

?? Vxworks下BSP源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* sngks32cSio.c - Samsung KS32C serial driver *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01c,30nov01,m_h  Save pChan->baudRate when setting baud01b,26apr01,m_h  convert tabs to spaces for readability01a,12apr01,m_h  created from snds100 template.*//*DESCRIPTIONThis is the serial I/O driver for Samsung's KS32C50100 microprocessor which is anARM based processor with several integrated peripherals.  It has an interruptcontroller, two 32-bit timers, one Ethernet controller,two HDLC controllers,one IIC controller, general purpose I/O ports, and a 2 channel DMA controller.The 2 UART channels integrated with the processor are controlled by thisdriver.  Both the UARTs can work in interrupt mode as well as DMA mode.This driver supports only the interrupt mode for the UARTs.All the UART registers are accessible as 32-bit integers from the internalsystem registers.  The macros SNGKS32C_REG_READ and SNGKS32C_REG_WRITE read and write32-bit integers from and to the given addresses.  SNGKS32C_SIO_DEFAULT_BAUD isdefined to 38400 in this file.  This is the default baud rate with which the UART channels will be initialized.  The channels are also initialized with one start bit, one stop bit, 8 bit data and no parity bits.The driver is typically only called only by the BSP. The directly callableroutines in this module are sngks32cDevInit(), sngks32cDevInit2(), sngks32cIntRcv(), sngks32cIntTx(), and sngks32cIntErr().The BSP calls sngks32cDevInit() to initialize or reset the device.It connects the driver's interrupt handlers (sngks32cIntRcv(), sngks32cIntTx(),and sngks32cIntErr()), using intConnect().After connecting the interrupt handlers, the BSP calls sngks32cDevInit2()to inform the driver that interrupt mode operation is now possible.INCLUDES:sngks32cSio.h sioLib.hSEE ALSO:<Samsung KS32C50100 User's Manual>*/#include "vxWorks.h"#include "sioLib.h"#include "intLib.h"#include "errno.h"#include "sngks32cSio.h"#include "ioLib.h"void  myDelay();#define AT91C_BAUD_MIN         1200#define AT91C_BAUD_MAX         230400#define AT91C_SIO_DEFAULT_BAUD 38400/* Hardware abstraction macros *//* local defines  */#ifndef AT91C_SIO_REG_READ#define AT91C_SIO_REG_READ(pChan, reg, result) \    ((result) = (*(volatile UINT32 *)((UINT32)(pChan)->regs + (reg))))#endif    /*AT91C_SIO_REG_READ*/#ifndef AT91C_SIO_REG_WRITE#define AT91C_SIO_REG_WRITE(pChan, reg, data) \    ((*(volatile UINT32 *)((UINT32)(pChan)->regs + (reg))) = (data))#endif    /*AT91C_SIO_REG_WRITE*//* for backward compatibility */#ifndef    SIO_HUP#   define SIO_OPEN    0x100A    /* open channel, raise DTR, RTS */#   define SIO_HUP     0x100B    /* hang-up, lower DTR, RTS */#endif/* forward static declarations */LOCAL int    at91cTxStartup (SIO_CHAN * pSioChan);LOCAL int    at91cCallbackInstall (SIO_CHAN *pSioChan, int callbackType,                                      STATUS (*callback)(), void *callbackArg);LOCAL int    at91cPollOutput (SIO_CHAN *pSioChan, char    outChar);LOCAL int    at91cPollInput (SIO_CHAN *pSioChan, char *thisChar);LOCAL int    at91cIoctl (SIO_CHAN *pSioChan, int request, void *arg);LOCAL STATUS dummyCallback (void);LOCAL void at91cIntRcv(AT91C_CHAN * pChan);LOCAL void at91cIntTx(AT91C_CHAN * pChan);/* local variables */LOCAL    SIO_DRV_FUNCS at91cSioDrvFuncs =    {    at91cIoctl,    at91cTxStartup,    at91cCallbackInstall,    at91cPollInput,    at91cPollOutput    };LOCAL BOOL at91cIntrMode = FALSE;    /* interrupt mode allowed flag *//******************************************************************************** at91cDevInit - initialize a AT91C_DUSART** This routine initializes the driver* function pointers and then resets the chip in a quiescent state.* The BSP must have already initialized all the device addresses and the* baudFreq fields in the AT91C_DUSART structure before passing it to* this routine.** RETURNS: N/A*/void at91cDevInit    (    AT91C_CHAN * pChan    )    {    /* initialize each channel's driver function pointers */    pChan->sio.pDrvFuncs    = &at91cSioDrvFuncs;    /* install dummy driver callbacks */    pChan->getTxChar     = dummyCallback;    pChan->putRcvChar    = dummyCallback;        /* reset the chip */    AT91C_SIO_REG_WRITE(pChan,AT91C_US_CR,(AT91C_US_RSTRX | AT91C_US_RSTTX));/*RESET*/    AT91C_SIO_REG_WRITE(pChan,AT91C_US_CR,(AT91C_US_RXEN | AT91C_US_TXEN));	/*TX&RX ENABLE*/    AT91C_SIO_REG_WRITE(pChan,AT91C_US_MR,(AT91C_US_CLKS_CLOCK | AT91C_US_CHRL_8_BITS |								AT91C_US_PAR_NONE | AT91C_US_NBSTOP_1_BIT));/*MODE*/    /* setting polled mode is one way to make the device quiet */    at91cIoctl ((SIO_CHAN *)pChan, SIO_MODE_SET, (void *)SIO_MODE_POLL);    at91cIoctl ((SIO_CHAN *)pChan, SIO_BAUD_SET, (void *)AT91C_SIO_DEFAULT_BAUD);    }/******************************************************************************** at91cDevInit2 - initialize a AT91C_DUSART, part 2** This routine is called by the BSP after interrupts have been connected.* The driver can now operate in interrupt mode.  Before this routine is* called only polled mode operations should be allowed.** RETURNS: N/A* ARGSUSED*/void at91cDevInit2    (    AT91C_CHAN * pChan        /* device to initialize */    )    {    char      outchar = '\0';    UINT32    status;#if 0	int i;    /* Interrupt mode is allowed */    AT91C_SIO_REG_WRITE(pChan,AT91C_US_CR,(AT91C_US_RSTRX | AT91C_US_RSTTX));/*RESET*/    AT91C_SIO_REG_WRITE(pChan,AT91C_US_CR,(AT91C_US_RXEN | AT91C_US_TXEN));	/*TX&RX ENABLE*/    AT91C_SIO_REG_WRITE(pChan,AT91C_US_MR,(AT91C_US_CLKS_CLOCK | AT91C_US_CHRL_8_BITS |								AT91C_US_PAR_NONE | AT91C_US_NBSTOP_1_BIT));/*MODE*/    AT91C_SIO_REG_WRITE(pChan,AT91C_US_IER,(AT91C_US_RXRDY |AT91C_US_TXRDY));/*INT ENABLE*/    intEnable(pChan->intLevel);    /*      * Dummy write to TXBUF to start TX empty interrupt     */    AT91C_SIO_REG_WRITE(pChan,AT91C_US_THR,outchar);	    AT91C_SIO_REG_READ(pChan,AT91C_US_CSR, status);  	/*    AT91C_SIO_REG_WRITE(pChan,AT91C_AIC_ICCR,(1<<pChan->intLevel));/*clear pend */		*(volatile UINT32 *)0xfffff800 = 0x35;	*(volatile UINT32 *)0xfffff810 = 0x35;		while(1)	{	*(volatile UINT32 *)0xfffff834 = 0x35;/*lit*/		for(i=0;i<1000000;i++);		*(volatile UINT32 *)0xfffff830 = 0x35;		for(i=0;i<1000000;i++);		}	    while ((status & AT91C_US_TXREADY) != AT91C_US_TXREADY)        ;#endif    AT91C_SIO_REG_WRITE(pChan,AT91C_US_IER,AT91C_US_RXRDY |AT91C_US_TXRDY);    at91cIntrMode = TRUE;    }/******************************************************************************** at91cInt - handle a system  interrupt:DBGU or ST_PIT** RETURNS: N/A*/ void sysIntHandler		(	    AT91C_CHAN *    pChan        /* channel generating the interrupt */	){	UINT32 status;	UINT32 mask;	status = *(volatile UINT32 *)AT91C_ST_SR;	mask = *(volatile UINT32 *)AT91C_ST_IMR;		if((status & mask) == 1)	{		sysClkInt();	}	else	{		at91cInt(pChan);	}}/******************************************************************************** at91cInt - handle a channel's Tramsmit or receive-character interrupt** RETURNS: N/A*/ void at91cInt		(	    AT91C_CHAN *    pChan        /* channel generating the interrupt */	){    	UINT32        status;	AT91C_SIO_REG_READ(pChan,AT91C_US_CSR, status);	if((status & AT91C_US_RXREADY ) == AT91C_US_RXREADY )		at91cIntRcv(pChan);	else if((status & AT91C_US_TXREADY) != AT91C_US_TXREADY)		return;		at91cIntTx(pChan);}/******************************************************************************** at91cIntRcv - handle a channel's receive-character interrupt** RETURNS: N/A*/ LOCAL void at91cIntRcv    (    AT91C_CHAN *    pChan        /* channel generating the interrupt */    )    {    char            inChar;    /*     * Grab the input character from the chip and hand it off via a     * callback. For chips with input FIFO's it is more efficient     * to empty the entire FIFO here.     */        AT91C_SIO_REG_READ(pChan,AT91C_US_RHR, inChar);        (*pChan->putRcvChar) (pChan->putRcvArg, inChar);    }/******************************************************************************** at91cIntTx - handle a channels transmitter-ready interrupt** RETURNS: N/A*/ LOCAL void at91cIntTx    (    AT91C_CHAN *    pChan        /* channel generating the interrupt */    )    {    char      outChar;    /*     * If there's a character to transmit then write it out, else reset     * the transmitter. For chips with output FIFO's it is more efficient     * to fill the entire FIFO here.     */    if ((*pChan->getTxChar) (pChan->getTxArg, &outChar) != ERROR)        AT91C_SIO_REG_WRITE(pChan, AT91C_US_THR, outChar);    else        {            AT91C_SIO_REG_WRITE(pChan, AT91C_US_IDR, AT91C_US_TXRDY);/*disable Tx interrupt*/#if 0		        *(volatile UINT32 *) AT91C_AIC_CISR= (1 << pChan->intLevel); /*INT pend clear*/#endif		*(volatile UINT32 *) AT91C_AIC_ICCR= (1 << pChan->intLevel); /*INT pend clear*/        }    }/******************************************************************************** at91cTxStartup - start the interrupt transmitter** RETURNS: OK on success, ENOSYS if the device is polled-only, or* EIO on hardware error.*/LOCAL int at91cTxStartup    (    SIO_CHAN * pSioChan                 /* channel to start */    )    {    AT91C_CHAN * pChan = (AT91C_CHAN *)pSioChan;/*    *(volatile UINT32 *)AT91C_AIC_CISR = (1 << pChan->intLevel);*/    *(volatile UINT32 *) AT91C_AIC_ICCR= (1 << pChan->intLevel); /*INT pend clear*/    AT91C_SIO_REG_WRITE(pChan, AT91C_US_IER,AT91C_US_TXRDY);	    intEnable (pChan->intLevel);    return (OK);    }/******************************************************************************** at91cCallbackInstall - install ISR callbacks to get/put chars** This driver allows interrupt callbacks for transmitting characters* and receiving characters. In general, drivers may support other* types of callbacks too.** RETURNS: OK on success, or ENOSYS for an unsupported callback type.*/ LOCAL int at91cCallbackInstall    (    SIO_CHAN *    pSioChan,               /* channel */    int           callbackType,           /* type of callback */    STATUS        (*callback)(),          /* callback */    void *        callbackArg             /* parameter to callback */    )    {    AT91C_CHAN * pChan = (AT91C_CHAN *)pSioChan;    switch (callbackType)    {    case SIO_CALLBACK_GET_TX_CHAR:        pChan->getTxChar    = callback;        pChan->getTxArg     = callbackArg;        return (OK);    case SIO_CALLBACK_PUT_RCV_CHAR:        pChan->putRcvChar    = callback;        pChan->putRcvArg     = callbackArg;        return (OK);    default:        return (ENOSYS);    }    }/********************************************************************************* at91cPollOutput - output a character in polled mode** RETURNS: OK if a character arrived, EIO on device error, EAGAIN* if the output buffer if full. ENOSYS if the device is* interrupt-only.*/LOCAL int at91cPollOutput    (    SIO_CHAN *pSioChan,    char      outChar    )    {    AT91C_CHAN * pChan = (AT91C_CHAN *)pSioChan;    UINT32    status;    /* is the transmitter ready to accept a character? */    AT91C_SIO_REG_READ (pChan, AT91C_US_CSR, status);    if ((status & AT91C_US_TXREADY) == 0x00)        return (EAGAIN);    /* write out the character */    AT91C_SIO_REG_WRITE(pChan, AT91C_US_THR, outChar);    return (OK);    }/******************************************************************************** at91cPollInput - poll the device for input** RETURNS: OK if a character arrived, EIO on device error, EAGAIN* if the input buffer if empty, ENOSYS if the device is* interrupt-only.*/LOCAL int at91cPollInput    (    SIO_CHAN *    pSioChan,    char *        thisChar    )    {    AT91C_CHAN * pChan = (AT91C_CHAN *)pSioChan;    UINT32    status;    AT91C_SIO_REG_READ (pChan,AT91C_US_CSR, status);    if ((status & AT91C_US_RXREADY) == 0x00)        return (EAGAIN);    /* no input available at this time */    /* got a character */    AT91C_SIO_REG_READ(pChan, AT91C_US_RHR, *thisChar);    return (OK);    }/******************************************************************************** at91cModeSet - toggle between interrupt and polled mode** RETURNS: OK on success, EIO on unsupported mode.*/LOCAL int at91cModeSet    (    AT91C_CHAN * pChan,        /* channel */    uint_t          newMode       /* new mode */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线影院| 1024成人网色www| 色婷婷精品久久二区二区蜜臀av| 麻豆精品一区二区综合av| 国产精品视频看| 日韩欧美中文一区| 一道本成人在线| 成人综合激情网| 蜜桃视频在线观看一区二区| 亚洲视频一区二区免费在线观看| 日韩欧美中文字幕公布| 欧美三级在线看| 91久久人澡人人添人人爽欧美| 国产精品一区二区x88av| 麻豆免费看一区二区三区| 亚洲国产成人av网| 亚洲高清一区二区三区| 一区二区三区在线视频播放| 国产精品网站一区| 国产午夜精品一区二区三区四区| 日韩视频在线一区二区| 制服视频三区第一页精品| 欧美日韩视频一区二区| 日本精品视频一区二区| 欧美综合视频在线观看| 91国偷自产一区二区开放时间| 日本道色综合久久| 欧美亚日韩国产aⅴ精品中极品| 在线观看国产一区二区| 欧美三级视频在线播放| 4438成人网| 精品不卡在线视频| 综合色天天鬼久久鬼色| 亚洲一区二区三区自拍| 久久国产精品99久久久久久老狼| 蜜臀av国产精品久久久久 | 国产成人av在线影院| 成人高清免费在线播放| 99精品在线免费| 88在线观看91蜜桃国自产| 精品国产不卡一区二区三区| 中文字幕在线不卡一区| 亚洲五月六月丁香激情| 国产美女精品在线| 色国产综合视频| 久久久久久97三级| 亚洲国产综合在线| 成人av在线影院| 日韩欧美在线影院| 一区二区三区在线观看欧美 | 亚洲成人7777| 国产麻豆91精品| 在线不卡a资源高清| 国产精品家庭影院| 久久精品国产精品亚洲精品| 91丨九色丨国产丨porny| 久久综合九色综合久久久精品综合| 中文字幕五月欧美| 国产伦精一区二区三区| 制服丝袜av成人在线看| 亚洲一卡二卡三卡四卡| 免费成人av资源网| 国产日产精品1区| 91.xcao| 自拍偷拍亚洲综合| 欧美一区二区三区成人| av在线播放成人| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美视频在线不卡| 99九九99九九九视频精品| 九九精品视频在线看| 日韩av一区二区在线影视| 午夜精品久久久久久久99樱桃| 亚洲男人的天堂在线观看| 一区二区理论电影在线观看| 亚洲黄网站在线观看| 亚洲人妖av一区二区| 自拍av一区二区三区| 国产精品福利在线播放| 国产精品福利一区| 一区二区三区四区在线免费观看| 亚洲一区二区视频在线观看| 偷拍与自拍一区| 日韩精品成人一区二区三区| 久久国内精品视频| 懂色一区二区三区免费观看| 99re这里都是精品| 欧美日本在线一区| 国产午夜精品久久久久久久| 亚洲国产精品激情在线观看| 国产精品的网站| 青青国产91久久久久久| 国产精品99久久久久久宅男| 在线免费观看日本欧美| 欧美三级一区二区| 久久理论电影网| 亚洲日本丝袜连裤袜办公室| 免费在线看一区| www.欧美日韩国产在线| 91精品国产日韩91久久久久久| 欧美—级在线免费片| 亚洲一区二区三区中文字幕在线| 国内精品伊人久久久久av一坑| 色综合天天综合网国产成人综合天 | 精品一区二区三区免费观看| 欧美视频在线一区二区三区 | 精品国产污污免费网站入口| 国产精品久久久久久久午夜片| 全国精品久久少妇| 在线观看免费亚洲| 中文字幕一区二区三区在线不卡 | 久久激情五月激情| 一本色道久久综合亚洲精品按摩| 日韩欧美在线123| 丝袜亚洲另类欧美| 一道本成人在线| 久久九九久久九九| 国产综合成人久久大片91| 欧美伦理电影网| 一区二区三区国产精华| 99国产精品久久久久久久久久久| 精品欧美黑人一区二区三区| 天堂av在线一区| 欧美精选在线播放| 亚洲成人综合视频| 在线观看成人小视频| 中文字幕一区二区三区四区不卡 | 日韩精品成人一区二区在线| 99国产精品久久久久久久久久 | 国产色产综合色产在线视频| 日本aⅴ免费视频一区二区三区| 欧美日韩亚洲国产综合| 日本一区中文字幕| 欧美精品1区2区| 日韩电影免费在线看| 日韩一区和二区| 九一久久久久久| 国产午夜精品福利| 99riav一区二区三区| 夜色激情一区二区| 欧美肥大bbwbbw高潮| 日本免费在线视频不卡一不卡二| 欧美日韩精品一区二区三区| 精品无人码麻豆乱码1区2区| xvideos.蜜桃一区二区| 国产成人精品影视| 亚洲视频狠狠干| 91麻豆精品国产91久久久久| 国产精品中文有码| 综合激情网...| 欧美电影在哪看比较好| 国产成a人无v码亚洲福利| 国产成人av自拍| 亚洲电影你懂得| 欧美变态tickling挠脚心| av电影天堂一区二区在线观看| 亚洲一二三四区不卡| 国产亚洲综合色| 91精品国产91久久久久久最新毛片 | 色妞www精品视频| 久草在线在线精品观看| 亚洲综合免费观看高清在线观看| 久久五月婷婷丁香社区| 欧美三级日韩在线| 92国产精品观看| 国产一区二区电影| 日韩高清不卡一区二区| 亚洲免费视频成人| 国产日韩高清在线| 精品剧情v国产在线观看在线| 色狠狠av一区二区三区| 粉嫩在线一区二区三区视频| 国产米奇在线777精品观看| 蜜臀av一区二区三区| 亚洲精品少妇30p| 国产精品护士白丝一区av| 欧美一区二区免费视频| 色婷婷综合久久久久中文一区二区| 亚洲成人你懂的| 国产欧美一区二区精品秋霞影院| jvid福利写真一区二区三区| 毛片基地黄久久久久久天堂| 奇米影视一区二区三区小说| 亚洲大片一区二区三区| 午夜精彩视频在线观看不卡| 精品国产91九色蝌蚪| 欧美大片日本大片免费观看| 日韩美一区二区三区| 欧美日韩一级视频| 精品视频免费看| 欧美三级电影在线看| 欧美在线短视频| 9191成人精品久久| 欧美大白屁股肥臀xxxxxx| 日韩欧美一二三四区| 2014亚洲片线观看视频免费| 久久久久久久电影| 亚洲视频狠狠干| 亚洲已满18点击进入久久| 亚洲日本免费电影|