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

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

?? sngks32csio-old.c

?? Vxworks下BSP源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* 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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看| 中文字幕第一页久久| 色狠狠一区二区三区香蕉| 欧美四级电影网| 国产色婷婷亚洲99精品小说| 午夜欧美在线一二页| 国产盗摄视频一区二区三区| 欧美美女一区二区三区| 国产亚洲1区2区3区| 蜜臀久久久久久久| 91黄色激情网站| 一区二区三区高清在线| 国产成人夜色高潮福利影视| 欧美精选一区二区| 日韩综合一区二区| 欧美无乱码久久久免费午夜一区| 亚洲天堂免费在线观看视频| 国产在线精品一区二区| 欧美人妇做爰xxxⅹ性高电影| 亚洲精品你懂的| 成人激情视频网站| 亚洲日韩欧美一区二区在线| 色综合色综合色综合色综合色综合| 国产午夜精品一区二区三区视频 | 日本亚洲欧美天堂免费| 91视视频在线观看入口直接观看www| 国产精品美女久久久久久2018| 成人深夜福利app| 中文字幕综合网| 欧美三级日韩在线| 偷拍一区二区三区| 久久综合久久综合九色| 成人免费看黄yyy456| 亚洲免费在线播放| 欧美刺激午夜性久久久久久久| 国精产品一区一区三区mba桃花 | 欧美日韩免费高清一区色橹橹| 五月婷婷色综合| 久久综合狠狠综合| 99久久国产免费看| 美女尤物国产一区| 亚洲精品一二三区| 久久久av毛片精品| 色老汉av一区二区三区| 国产精品一区二区久久不卡| 一二三四社区欧美黄| 欧美一区二区三区日韩| 色综合网色综合| 国模一区二区三区白浆| 亚洲国产一区二区三区| 国产视频一区不卡| 日韩欧美成人午夜| 99国产精品久| 高清国产一区二区| 精品一区二区三区在线视频| 性做久久久久久久免费看| 一区二区欧美精品| 亚洲三级在线免费| 国产精品区一区二区三区| 91精品国产综合久久国产大片| 一本大道综合伊人精品热热 | 国产欧美日韩另类一区| 欧美一级艳片视频免费观看| 在线电影国产精品| 欧美三级视频在线观看| 在线观看欧美黄色| 日本精品一区二区三区高清| 91在线免费视频观看| 欧美性欧美巨大黑白大战| 色婷婷激情一区二区三区| 丰满放荡岳乱妇91ww| 99精品视频在线播放观看| 99视频精品免费视频| 色屁屁一区二区| 欧美日韩一区二区在线观看| 91免费观看国产| 懂色一区二区三区免费观看| av一区二区三区在线| 色婷婷精品久久二区二区蜜臂av | 国产91精品欧美| 色婷婷国产精品久久包臀| 欧美丰满少妇xxxxx高潮对白| 日韩欧美电影一二三| 久久综合丝袜日本网| 在线免费观看成人短视频| 日本亚洲电影天堂| 伊人开心综合网| 一区二区三区欧美| 成年人午夜久久久| 91国在线观看| 精品欧美一区二区三区精品久久| 久久人人97超碰com| 亚洲视频你懂的| 日本成人中文字幕在线视频| 国产一区二区福利视频| 欧美在线免费播放| 欧美精品乱人伦久久久久久| 日本一区二区三级电影在线观看| 国产精品萝li| 一区二区三区在线观看网站| 日韩电影在线免费看| 国产高清无密码一区二区三区| 欧美图片一区二区三区| 中文字幕在线一区| 激情五月婷婷综合网| 欧美在线你懂得| 中文字幕亚洲精品在线观看| 韩国精品在线观看| 日韩欧美一区中文| 亚洲你懂的在线视频| av电影天堂一区二区在线| 国产视频在线观看一区二区三区 | zzijzzij亚洲日本少妇熟睡| 久久色.com| 国产成人av电影免费在线观看| 欧美日韩高清影院| 爽爽淫人综合网网站| 欧美精品乱人伦久久久久久| 中文字幕一区二区三区精华液| 成人丝袜视频网| 2020国产精品自拍| 成人av资源在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 成人精品国产一区二区4080| 亚洲色图欧洲色图| 欧美肥大bbwbbw高潮| 成人午夜视频网站| 日韩成人一区二区三区在线观看| 久久久久9999亚洲精品| 在线影视一区二区三区| 国产麻豆视频一区二区| 性欧美疯狂xxxxbbbb| 中文字幕一区二区三区色视频| 91精品国产综合久久精品麻豆| 高清国产一区二区| 国产综合色精品一区二区三区| 一区二区欧美国产| 亚洲国产高清aⅴ视频| 精品少妇一区二区三区在线视频 | 国产一区二区三区在线看麻豆| 亚洲午夜精品网| 亚洲精品乱码久久久久久久久| 国产日产欧产精品推荐色 | av一二三不卡影片| 国产一区二区在线影院| 日本vs亚洲vs韩国一区三区二区| 一区二区三区美女| 一区二区三区电影在线播| 国产精品无圣光一区二区| 久久久一区二区三区捆绑**| 91精品国产综合久久久久久| 在线观看www91| 欧美日本一区二区| 69堂亚洲精品首页| 国产精品视频一区二区三区不卡| 精品少妇一区二区三区免费观看| 欧美视频一区二| 欧美一区二区三区在线| 91麻豆精品国产| 亚洲精品一区二区三区精华液 | 亚洲精品亚洲人成人网| 中文字幕在线观看一区| 亚洲综合成人在线视频| 丝袜美腿一区二区三区| 国内精品免费在线观看| 国产精品一区二区三区乱码 | caoporn国产精品| 欧美伊人久久大香线蕉综合69| 91精品国产入口| 国产精品系列在线| 首页国产欧美久久| 国产一区欧美一区| 日本电影亚洲天堂一区| 欧美疯狂做受xxxx富婆| 国产欧美日韩综合精品一区二区| 亚洲精选一二三| 国产一区二区三区久久久| 欧美大片日本大片免费观看| 精品999久久久| 亚洲国产日韩a在线播放性色| 国产精品一区2区| 欧美精品18+| 亚洲最新视频在线观看| 国产精品一区二区免费不卡 | 亚洲女厕所小便bbb| 日韩精品福利网| 91精彩视频在线| 国产精品视频一二| 狂野欧美性猛交blacked| 91九色02白丝porn| 日韩毛片高清在线播放| 国产精品自拍毛片| 欧美精品一区二区三区在线播放| 亚洲成人在线免费| 欧美综合色免费| 亚洲一区二区精品视频| 欧美亚洲一区二区在线观看| 亚洲欧美视频在线观看视频| 成人高清视频免费观看| 久久久久国产一区二区三区四区|