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

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

?? ppc860scc.c

?? 基于如何開發MPC860處理器系統的核心業務模塊QMC的開發程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "copyright_wrs.h"

/*
modification history
--------------------
2000.6.6 copy from ppc860sio.c
*/

/* includes */

#include "vxWorks.h"
#include "intLib.h"
#include "errno.h"
#include "sioLib.h"
#include "drv/multi/ppc860Siu.h"
#include "drv/multi/ppc860Cpm.h"
#include "drv/sio/ppc860Sio.h"
#include "mpc860p.h"
/* defines */

#define DEFAULT_BAUD 9600

/* forward declarations */

static STATUS ppc860SccIoctl (PPC860SCC_CHAN *pChan,int request,int arg);
static void   ppc860SccResetChannel (PPC860SCC_CHAN *pChan);
static int    ppc860SccPollOutput (SIO_CHAN *,char);
static int    ppc860SccPollInput (SIO_CHAN *,char *);
static void   ppc860SccStartup (PPC860SCC_CHAN *);
static int    ppc860SccCallbackInstall (SIO_CHAN *, int, STATUS (*)(), void *);

/* local driver function table */

static SIO_DRV_FUNCS ppc860SccDrvFuncs =
    {
    (int (*)())			ppc860SccIoctl,
    (int (*)())			ppc860SccStartup,
    				ppc860SccCallbackInstall,
    (int (*)())			ppc860SccPollInput,
    (int (*)(SIO_CHAN *,char))	ppc860SccPollOutput
    };

/******************************************************************************
*
*
* ppc860DevInit - initialize the SCC
*
* This routine is called to initialize the chip to a quiescent state.
* Note that the `smcNum' field of PPC860SCC_CHAN must be either 1 or 2.
*/

void ppc860SccDevInit
    (
    PPC860SCC_CHAN *pChan
    )
    {
    /* masks off this SCC's interrupt. */
	
    * CIMR(pChan->regBase) &= ~CIMR_SCC3 ;
    
    pChan->baudRate  = DEFAULT_BAUD;
    pChan->pDrvFuncs = &ppc860SccDrvFuncs;
    }

/******************************************************************************
*
*
* ppc860ResetChannel - initialize the SCC
*/

static void ppc860SccResetChannel 
    (
    PPC860SCC_CHAN *pChan
    )
    {
    int frame;

    int oldlevel = intLock ();	/* lock interrupts */ 

    pChan->uart.intMask = CIMR_SCC3;
    
    /* set up SCC3 as NMSI, select Baud Rate Generator */

    * SICR(pChan->regBase) |= 0x00090000;
	 
    /* reset baud rate generator, wait for reset to clear... */
 
    *pChan->pBaud |= BRGC_RST;
    while (*pChan->pBaud & BRGC_RST);

    ppc860SccIoctl (pChan, SIO_BAUD_SET, pChan->baudRate);

    /* set up transmit buffer descriptors */
	pChan->uart.txBdBase = (SCC_BUF *) (pChan->regBase +
		         ((UINT32) pChan->uart.txBdBase ));
    pChan->uart.pScc->param.tbase = (UINT16) SCC3_TBD_OFF;
    pChan->uart.pScc->param.tbptr = (UINT16) SCC3_TBD_OFF;
    pChan->uart.txBdNext = 0;

    /* initialize each transmit buffer descriptor */

    for (frame = 0; frame < pChan->uart.txBdNum; frame++)
        {
        pChan->uart.txBdBase[frame].statusMode = 0x9000;

        pChan->uart.txBdBase[frame].dataPointer = pChan->uart.txBufBase +
                                          (frame * pChan->uart.txBufSize);
        }

    /* set the last BD to wrap to the first */

    pChan->uart.txBdBase[(frame - 1)].statusMode |= 0x2000;

    /* set up receive buffer descriptors */

    pChan->uart.rxBdBase = (SCC_BUF *) (pChan->regBase +
		         ((UINT32) pChan->uart.rxBdBase ));

    pChan->uart.pScc->param.rbase = (UINT16) SCC3_RBD_OFF;
    pChan->uart.pScc->param.rbptr = (UINT16) SCC3_RBD_OFF;
    pChan->uart.rxBdNext = 0;

    /* initialize each receive buffer descriptor */
	
    for (frame = 0; frame < pChan->uart.rxBdNum; frame++)
        {
        pChan->uart.rxBdBase[frame].statusMode = 0x9000;
        pChan->uart.rxBdBase[frame].dataLength = 1; /* char oriented */
        pChan->uart.rxBdBase[frame].dataPointer = pChan->uart.rxBufBase + 
frame;
        }

    /* set the last BD to wrap to the first */

    pChan->uart.rxBdBase[(frame - 1)].statusMode |= 0x2000;

    /* set SCC attributes to standard UART mode */

    pChan->uart.pSccReg->gsmrl = 0x00028004;
	pChan->uart.pSccReg->gsmrh = 0x00000020;
	pChan->uart.pSccReg->psmr = 0xb000;
	
    /* initialize parameter RAM area for this SMC */

    pChan->uart.pScc->param.rfcr       = 0x18;	/* supervisor data access */
    pChan->uart.pScc->param.tfcr       = 0x18;	/* supervisor data access */
    pChan->uart.pScc->param.mrblr      = 0x1;	/* one character rx buffers */
    pChan->uart.pScc->proto.maxIdl     = 0x0;	/* maximum idle characters */
    pChan->uart.pScc->proto.brkcr      = 1;		/* break count register (transmit) */
    pChan->uart.pScc->proto.parec      = 0;		/* receive parity error counter */
    pChan->uart.pScc->proto.frmer      = 0;		/* receive framing error counter */
    pChan->uart.pScc->proto.nosec      = 0;		/* receive noise counter */
    pChan->uart.pScc->proto.brkec      = 0;		/* receive break condition counter */
    pChan->uart.pScc->proto.uaddr1     = 0;		/* uart address character 1 */
    pChan->uart.pScc->proto.uaddr2     = 0;		/* uart address character 2 */
    pChan->uart.pScc->proto.toseq 	   = 0;		/* transmit out-of-sequence character */
    pChan->uart.pScc->proto.character1 = 0x8000;
    pChan->uart.pScc->proto.character2 = 0x8000;
    pChan->uart.pScc->proto.character3 = 0x8000;		
    pChan->uart.pScc->proto.character4 = 0x8000;		
    pChan->uart.pScc->proto.character5 = 0x8000;		
    pChan->uart.pScc->proto.character6 = 0x8000;		
    pChan->uart.pScc->proto.character7 = 0x8000;		
    pChan->uart.pScc->proto.character8 = 0x8000;		
    pChan->uart.pScc->proto.rccm 	   = 0xc0ff;		
    
    /* clear all events */

    pChan->uart.pSccReg->scce = 0x0067;

    /* enables the transmitter and receiver  */

   pChan->uart.pSccReg->gsmrl = 0x00028034;

    /* unmask interrupt (Tx, Rx only) */

    pChan->uart.pSccReg->sccm  = 0x0003;
    *CIMR(pChan->regBase) |= pChan->uart.intMask;

    intUnlock (oldlevel);			/* UNLOCK INTERRUPTS */
    }

/******************************************************************************
*
*
* ppc860Ioctl - special device control
*
* RETURNS: OK on success, EIO on device error, ENOSYS on unsupported
*          request.
*
*/

LOCAL STATUS ppc860SccIoctl
    (
    PPC860SCC_CHAN *	pChan,		/* device to control */
    int			request,	/* request code */
    int			arg		/* some argument */
    )
    {
    int		baudRate;
    int 	oldlevel;
    STATUS 	status = OK;

    switch (request)
	{
	case SIO_BAUD_SET:
            if (arg >=  50 && arg <= 38400)	/* could go higher... */
		{
		/* calculate proper counter value, then enable BRG */

		baudRate = (pChan->clockRate + (8 * arg)) / (16 * arg);

		if (--baudRate > 0xfff)
		    *pChan->pBaud = (BRGC_CD_MSK &
		    (((baudRate + 8) / 16) << BRGC_CD_SHIFT)) | BRGC_EN |
		    BRGC_DIV16;
                else
                    *pChan->pBaud = (BRGC_CD_MSK & 
			(baudRate << 1)) | BRGC_EN;

                pChan->baudRate = arg;
		}
            else
	        status = EIO;
	    break;
    
	case SIO_BAUD_GET:
	    * (int *) arg = pChan->baudRate;
	    break;

	case SIO_MODE_SET:
            if (!((int) arg == SIO_MODE_POLL || (int) arg == SIO_MODE_INT))
                {
                status = EIO;
                break;
                }

            /* lock interrupt  */

            oldlevel = intLock();

            /* initialize channel on first MODE_SET */

            if (!pChan->channelMode)
                ppc860SccResetChannel(pChan);

            /*
             * if switching from POLL to INT mode, wait for all characters to
             * clear the output pins
             */

            if ((pChan->channelMode == SIO_MODE_POLL) && (arg == SIO_MODE_INT))
                {
		int i;

                for (i=0; i < pChan->uart.txBdNum; i++)
                    while (pChan->uart.txBdBase
                           [(pChan->uart.txBdNext + i) % pChan->uart.txBdNum].
                           statusMode & BD_TX_READY_BIT);

                }

            if (arg == SIO_MODE_INT)
		{
                * CISR(pChan->regBase) = pChan->uart.intMask;
				/* reset the SCC's interrupt status bit */

		* CIMR(pChan->regBase) |= pChan->uart.intMask;
				/* enable this SCC's interrupt  */

		pChan->uart.pSccReg->scce = 0x0001;	
				/* reset the receiver status bit */ 

                pChan->uart.pSccReg->sccm = 0x0003;
				/* enables receive and transmit interrupts */
		}
            else
		{
                pChan->uart.pSccReg->sccm = 0;
				/* mask off the receive and transmit intrs */

		* CIMR(pChan->regBase) &= (~(pChan->uart.intMask));
				/* mask off this SCC's interrupt */ 

                }

            pChan->channelMode = arg;

            intUnlock(oldlevel);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看免费亚洲| 国产精品成人午夜| 亚洲色图色小说| 精品一区二区免费在线观看| 成人18视频在线播放| 欧美草草影院在线视频| 一区二区三区日韩在线观看| 国产精品2024| 精品国产凹凸成av人导航| 亚洲一区二区视频在线观看| 成人高清免费在线播放| 日韩欧美一级在线播放| 亚洲一区二区欧美日韩 | 日韩一区在线看| 青青青伊人色综合久久| 欧美在线免费播放| 国产精品久久久久久久久果冻传媒 | 欧美mv日韩mv国产| 亚洲电影你懂得| 在线观看免费亚洲| 亚洲码国产岛国毛片在线| 成人午夜视频免费看| 精品电影一区二区三区| 久久精品国产亚洲一区二区三区| 7799精品视频| 天天操天天综合网| 欧美日韩国产一区| 国产精品自拍三区| 久久女同互慰一区二区三区| 免费不卡在线视频| 日韩精品资源二区在线| 蜜臀久久99精品久久久久久9| 这里只有精品视频在线观看| 亚州成人在线电影| 欧美精品少妇一区二区三区| 亚洲福中文字幕伊人影院| 欧美久久久久中文字幕| 亚洲6080在线| 日韩三级视频中文字幕| 精品一区二区日韩| 国产女人18毛片水真多成人如厕| 国产精品小仙女| 中文字幕在线播放不卡一区| 99久久er热在这里只有精品66| 自拍偷拍欧美精品| 欧美三级视频在线| 久久99久久精品欧美| 久久久久久黄色| av不卡一区二区三区| 一级日本不卡的影视| 欧美巨大另类极品videosbest| 日本特黄久久久高潮| 日韩精品一区二区三区视频在线观看| 欧美日韩国产天堂| 蜜臀久久99精品久久久画质超高清| 欧美成人精品二区三区99精品| 国产一区二区三区久久悠悠色av| 日本一区二区三区在线不卡| 97精品久久久午夜一区二区三区| 亚洲精品成人在线| 91精品免费观看| 国产不卡视频在线播放| 亚洲精品午夜久久久| 日韩一区二区在线观看视频| 国产精品2024| 亚洲国产一区二区视频| 精品粉嫩aⅴ一区二区三区四区| 99在线精品免费| 性久久久久久久久| 中文字幕av免费专区久久| 日本韩国欧美一区二区三区| 蜜臀av一级做a爰片久久| 国产精品日产欧美久久久久| 91精品国产手机| 97se亚洲国产综合在线| 麻豆精品在线视频| 亚洲最色的网站| 国产女主播一区| 欧美日韩一级片在线观看| 国产精品69毛片高清亚洲| 日韩影院在线观看| 国产精品国产三级国产普通话蜜臀| 欧美一区二区精品| 色av成人天堂桃色av| 国产美女视频一区| 日韩国产在线观看一区| 亚洲裸体xxx| 国产欧美日韩在线| 在线综合+亚洲+欧美中文字幕| 成人午夜在线视频| 国产精品一区二区果冻传媒| 日本欧美加勒比视频| 亚洲欧美日韩在线播放| 国产三级一区二区三区| 欧美一区二区二区| 欧美性色黄大片| 91污片在线观看| 国产成人鲁色资源国产91色综| 午夜精品福利一区二区三区av | 2020国产成人综合网| 91精品中文字幕一区二区三区| 欧洲精品在线观看| 日本精品视频一区二区三区| jizzjizzjizz欧美| 成人免费看的视频| 99久久精品国产一区二区三区| 国产精品 日产精品 欧美精品| 免费成人在线影院| 日本va欧美va瓶| 蜜桃久久久久久久| 久久精品国产精品青草| 精品一区二区三区久久久| 麻豆国产一区二区| 精品一区二区久久久| 狠狠色丁香婷婷综合| 色噜噜久久综合| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 波多野结衣亚洲一区| 99久久国产免费看| 欧美亚洲一区三区| 欧美日韩黄色影视| 日韩欧美国产一区在线观看| 精品久久久久久久久久久久包黑料 | 久久众筹精品私拍模特| 久久毛片高清国产| 中文av一区二区| 综合分类小说区另类春色亚洲小说欧美| 中文字幕免费不卡| 亚洲欧美日韩中文字幕一区二区三区| 亚洲另类在线制服丝袜| 亚洲高清免费一级二级三级| 日本午夜精品视频在线观看| 精品一区二区久久| 99精品视频免费在线观看| 91老师片黄在线观看| 欧美精品99久久久**| 日韩欧美国产午夜精品| 国产午夜精品一区二区三区视频 | 亚洲国产成人在线| 亚洲欧美色一区| 日本不卡一二三| 风间由美性色一区二区三区| 一本到三区不卡视频| 欧美老肥妇做.爰bbww视频| 欧美电影免费观看高清完整版在| 久久久久久99久久久精品网站| 亚洲人成伊人成综合网小说| 性感美女极品91精品| 韩国精品主播一区二区在线观看| zzijzzij亚洲日本少妇熟睡| 欧美三级欧美一级| 久久久www成人免费毛片麻豆| 亚洲图片另类小说| 日产精品久久久久久久性色| 国产成人精品综合在线观看| 欧美日本在线播放| 国产人成一区二区三区影院| 亚洲国产精品久久人人爱蜜臀| 国产乱子轮精品视频| 欧美午夜精品免费| 中文文精品字幕一区二区| 亚洲图片欧美视频| 粉嫩蜜臀av国产精品网站| 欧美疯狂性受xxxxx喷水图片| 国产欧美一区二区精品久导航| 欧美aⅴ一区二区三区视频| 不卡的av电影| 26uuu精品一区二区| 三级一区在线视频先锋| 6080午夜不卡| 亚洲欧美日韩中文播放| 国产91富婆露脸刺激对白 | 91久久精品一区二区三| 久久久精品欧美丰满| 香蕉成人啪国产精品视频综合网| 成人午夜大片免费观看| 精品国产91洋老外米糕| 免费一级欧美片在线观看| 91久久国产综合久久| 国产精品久久久久9999吃药| 激情深爱一区二区| 欧美一区二区大片| 日韩国产一区二| 51精品秘密在线观看| 一二三四区精品视频| 色综合久久88色综合天天免费| 国产视频一区在线播放| 国产高清精品久久久久| 久久免费精品国产久精品久久久久| 日韩高清在线一区| 911精品国产一区二区在线| 亚洲尤物视频在线| 一本到不卡免费一区二区| 怡红院av一区二区三区| 91在线观看视频| 亚洲欧洲中文日韩久久av乱码| 99热在这里有精品免费| 国产精品福利影院| 99国内精品久久| 亚洲另类在线一区|