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

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

?? m5200pscsio.c

?? mpc5200 for bsp,it is have passed built.
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
    int lvl;    if ((*pChan->getTxChar) (pChan->getTxArg, &outChar) != ERROR)	{	lvl = intLock ();        M5200_WRITE (pChan->cr, PSC_UART_CR_TX_ENABLE);	M5200_WRITE (pChan->tb, outChar);	intUnlock (lvl);	}#else    M5200_WRITE (pChan->cr, PSC_UART_CR_TX_ENABLE);#endif    return (OK);    }/******************************************************************************** m5200CallbackInstall - 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:* Returns OK on success, or ENOSYS for an unsupported callback type.*/LOCAL int m5200CallbackInstall    (    M5200_PSC_CHAN *	pChan,    int		callbackType,    STATUS	(*callback)(),    void *      callbackArg    )    {    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);	}    }/******************************************************************************** m5200PollOutput - output a character in polled mode.** This routine polls the status register to see if the TxRDY bit has been set.* This signals that the transmit holding register is empty and that the* UART is ready for transmission.** RETURNS:* Returns OK if a character sent, EIO on device error, EAGAIN* if the output buffer is full.*/LOCAL int m5200PollOutput    (    M5200_PSC_CHAN *pChan,    char	outChar    )    {    USHORT statusReg;    statusReg = M5200_READ (pChan->sr);    /* is the transitter ready to accept a character? */    if ((statusReg & PSC_UART_SR_TXRDY) == 0x00)	return (EAGAIN);    /* write out the character */    M5200_WRITE (pChan->tb, outChar);    return (OK);    }/******************************************************************************** m5200PollInput - poll the device for input.** This routine polls the status register to see if the RxRDY bit is set.* This gets set when the UART receives a character and signals the* pressence of a character in the receive buffer.** RETURNS:* Returns OK if a character arrived, EIO on device error, EAGAIN* if the input buffer if empty.**/LOCAL int m5200PollInput    (    M5200_PSC_CHAN *pChan,    char *	thisChar    )    {    USHORT statusReg;    statusReg = M5200_READ (pChan->sr);    if ((statusReg & PSC_UART_SR_RXRDY) == 0x00)	return (EAGAIN);    *thisChar = (M5200_READ (pChan->rb) & 0xff000000) >> 24;    return (OK);    }/******************************************************************************** m5200ModeSet - change channel mode setting** This driver supports both polled and interrupt modes and is capable of* switching between modes dynamically. If interrupt mode is desired this* routine enables the channels receiver, transmitter interrupt and the* received break condition interrupt. If polled mode is desired the xmitrs for* the specified channel is enabled.** RETURNS:* Returns a status of OK if the mode was set else ERROR.*/LOCAL STATUS m5200ModeSet    (    M5200_PSC_CHAN * pChan,    UINT	newMode    )    {    int oldlevel;    if ((newMode != SIO_MODE_POLL) && (newMode != SIO_MODE_INT))	return (ERROR);    oldlevel = intLock ();    if (newMode == SIO_MODE_INT && pChan->intEnable)        {	/* Enable the interrupts for receiver/transmitter conditions */	m5200ImrSetClr (pChan, PSC_UART_IMR_TXRDY | PSC_UART_IMR_RXRDY, 0);        }    else        {	/* Disable interrupts and enable the transmitter for the channel */	m5200ImrSetClr (pChan, 0, PSC_UART_IMR_TXRDY | PSC_UART_IMR_RXRDY);	M5200_WRITE (pChan->cr, PSC_UART_CR_TX_ENABLE);        }    intUnlock (oldlevel);    pChan->mode = newMode;    return (OK);    }/******************************************************************************** m5200BaudSet - change baud rate for channel** This routine sets the baud rate for the UART. The interrupts are disabled* during chip access.** RETURNS:* Returns a status of OK if the baud rate was set else ERROR.*/LOCAL STATUS  m5200BaudSet    (    M5200_PSC_CHAN * pChan,    UINT	baud    )    {    int oldlevel;    ULONG aDivisor;    ULONG aClockDivisor;		    if (!baud)	return (ERROR);    aDivisor = baud *16 * 2;		    aClockDivisor = (pChan->clkRate + aDivisor/2) / aDivisor;    if ((aClockDivisor < 2) || (aClockDivisor > 0xffff))	return (ERROR);    oldlevel = intLock ();    M5200_WRITE( pChan->dl, aClockDivisor & 0xff);		    M5200_WRITE( pChan->dp, (aClockDivisor & 0xff00) >> 8);    intUnlock (oldlevel);    return (OK);    }/******************************************************************************** m5200OptsSet - set the serial options** Set the channel operating mode to that specified.  All sioLib options* are supported: CLOCAL, CREAD, CSIZE, PARENB, and PARODD.** Note, this routine disables the transmitter.  The calling routine* may have to re-enable it.** RETURNS:* Returns OK to indicate success, otherwise ERROR is returned*/LOCAL STATUS m5200OptsSet    (    M5200_PSC_CHAN * pChan, /* ptr to channel */    UINT options	/* new hardware options */    )    {    int mr1Value;    int mr2Value;    int lvl;    if (pChan == NULL || options & 0xffffff00)	return (ERROR);    /* Reset the transmitters  & receivers  */    switch (options & CSIZE)	{	case CS5:	    mr1Value = PSC_UART_MR1_BITS_CHAR_5;	    break;	case CS6:	    mr1Value = PSC_UART_MR1_BITS_CHAR_6;	    break;	case CS7:	    mr1Value = PSC_UART_MR1_BITS_CHAR_7;	    break;	default:	case CS8:	    mr1Value = PSC_UART_MR1_BITS_CHAR_8;	    break;	}    if (options & STOPB)	mr2Value = PSC_UART_MR2_STOP_BITS_2;    else	mr2Value = PSC_UART_MR2_STOP_BITS_1;    switch (options & (PARENB|PARODD))	{	case PARENB|PARODD:	    mr1Value |= PSC_UART_MR1_ODD_PARITY;	    break;	case PARENB:	    mr1Value |= PSC_UART_MR1_EVEN_PARITY;	    break;	case PARODD:	    mr1Value |= PSC_UART_MR1_PAR_MODE_MULTI;	    break;	default:	case 0:	    mr1Value |= PSC_UART_MR1_NO_PARITY; break;	}    if (options & CLOCAL)	{	/* clocal enables hardware flow control */	mr1Value |= PSC_UART_MR1_RX_RTS;	mr2Value |= PSC_UART_MR2_TX_CTS;	}    lvl = intLock ();    /* now reset the channel mode registers */    M5200_WRITE (pChan->cr, PSC_UART_CR_RESET_MODE_PTR		 | PSC_UART_CR_RX_DISABLE		 | PSC_UART_CR_TX_DISABLE);    M5200_WRITE (pChan->cr, PSC_UART_CR_RESET_TX);    M5200_WRITE (pChan->cr, PSC_UART_CR_RESET_RX);    M5200_WRITE (pChan->mr, mr1Value);  /* mode register 1  */    M5200_WRITE (pChan->mr, mr2Value);  /* mode register 2  */    M5200_WRITE (pChan->cr, PSC_UART_CR_TX_ENABLE);    if (options & CREAD)	M5200_WRITE (pChan->cr, PSC_UART_CR_RX_ENABLE);    intUnlock (lvl);    pChan->options = options;    return (OK);    }/******************************************************************************** m5200Ioctl - special device control** RETURNS:* Returns OK on success, EIO on device error, ENOSYS on unsupported* request.*/LOCAL int m5200Ioctl    (    M5200_PSC_CHAN *	pChan,		/* device to control */    int		request,		/* request code */    void *	someArg			/* some argument */    )    {    STATUS result;    int     arg = (int)someArg;    switch (request)	{	case SIO_BAUD_SET:	    return (m5200BaudSet (pChan, arg) == OK ? OK : EIO);	case SIO_BAUD_GET:	    *(int *)arg = pChan->baudRate;	    return (OK);	case SIO_MODE_SET:	    return (m5200ModeSet (pChan, arg) == OK ? OK : EIO);	case SIO_MODE_GET:	    *(int *)arg = pChan->mode;	    return (OK);	case SIO_AVAIL_MODES_GET:	    *(int *)arg = SIO_MODE_INT | SIO_MODE_POLL;	    return (OK);	case SIO_HW_OPTS_SET:	    /* change options, then set mode to restart chip correctly */	    result = m5200OptsSet (pChan, arg);	    m5200ModeSet (pChan, pChan->mode);	    return result;	case SIO_HW_OPTS_GET:	    return pChan->options;	default:	    return (ENOSYS);	}    }/******************************************************************************** m5200IntWr - handle a transmitter interrupt** This routine handles write interrupts from the DUART. This isr is invoked* when the TxRDY bit in the interrupt status register has been set. If there* is no character to transmit the transmitter for the channel is disabled.** RETURNS: N/A*/LOCAL void m5200IntWr    (    M5200_PSC_CHAN * pChan    )    {    char            outChar;    if ((*pChan->getTxChar) (pChan->getTxArg, &outChar) != ERROR)	{	/* if char available, tx it */	M5200_WRITE (pChan->tb, outChar);	}    else        {	M5200_WRITE (pChan->cr, PSC_UART_CR_TX_DISABLE);        }    }/******************************************************************************* m5200IntRd - handle a reciever interrupt** This routine handles read interrupts from the UART.* The UART has been programmed to generate read interrupts when the RXRDY* status bit has been set in the interrupt status register. When a character* has been received it is removed from the receive buffer.** RETURNS: N/A*/LOCAL void m5200IntRd    (    M5200_PSC_CHAN * pChan    )    {    UINT16	inchar;    while (M5200_READ(pChan->sr) & PSC_UART_SR_RXRDY)        {        inchar = (M5200_READ (pChan->rb) & 0xff000000) >> 24;	(*pChan->putRcvChar) (pChan->putRcvArg, inchar);	if (pChan->mode != SIO_MODE_INT)	    break;        }    }/********************************************************************************* m5200PscSioInt - handle all interrupts in one vector** All interrupts share a single interrupt vector.* We identify each interrupting source and service it.* We must service all interrupt sources for those systems with edge-* sensitive interrupt controllers.** RETURNS: N/A*/void m5200PscSioInt    (    M5200_PSC_CHAN * pChan    )    {    UINT16        intStatus;    /* loop until all sources have been handled */    while ((intStatus = (M5200_READ(pChan->isr) & pChan->imrCopy)) != 0)	{	if ((intStatus & PSC_UART_ISR_TXRDY) != 0)	    m5200IntWr (pChan);	if ((intStatus & PSC_UART_ISR_RXRDY) != 0)	    m5200IntRd (pChan);	if (pChan->mode != SIO_MODE_INT)	    break;	}    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 欧美日韩精品一区视频| 亚洲高清视频在线| 国产欧美一区二区精品性| 91成人免费电影| 高清不卡在线观看| 日本特黄久久久高潮| 亚洲欧美日韩国产成人精品影院 | 欧美日韩激情在线| 国产成人精品免费| 美女视频一区二区| 天天综合天天综合色| 亚洲欧美色图小说| 欧美国产一区视频在线观看| 日韩欧美三级在线| 欧美精品在线一区二区三区| 91色乱码一区二区三区| 成人免费高清在线| 国产一区二区不卡在线| 免费成人在线观看| 日韩制服丝袜av| 亚洲午夜日本在线观看| 亚洲视频每日更新| 1024成人网| 日韩美女精品在线| 国产精品美女久久久久久久网站| 久久伊人蜜桃av一区二区| 欧美精品日日鲁夜夜添| 欧美日韩一区二区三区在线| 色婷婷一区二区三区四区| 成+人+亚洲+综合天堂| 国产精品资源在线观看| 久久99精品久久只有精品| 美女www一区二区| 蜜桃视频免费观看一区| 日韩av一区二区三区| 奇米精品一区二区三区四区| 日本不卡一区二区三区高清视频| 亚洲观看高清完整版在线观看| 亚洲三级在线免费观看| 日韩理论片中文av| 一区二区三区成人在线视频| 一区二区三区欧美在线观看| 亚洲精品菠萝久久久久久久| 亚洲激情六月丁香| 亚洲一区成人在线| 香蕉影视欧美成人| 美脚の诱脚舐め脚责91| 久久97超碰国产精品超碰| 国产一区二区在线观看视频| 国产成人啪午夜精品网站男同| 成人一区二区三区视频在线观看| 成人美女视频在线观看| 99精品视频在线观看免费| 91国产视频在线观看| 欧美人体做爰大胆视频| 精品国内二区三区| 日本一区免费视频| 亚洲乱码国产乱码精品精可以看 | 亚洲成人动漫一区| 亚洲国产精品视频| 美女在线视频一区| 国产suv一区二区三区88区| 不卡av电影在线播放| 欧洲另类一二三四区| 欧美一区二区三区视频免费| 久久众筹精品私拍模特| 136国产福利精品导航| 亚洲成av人片在www色猫咪| 另类小说一区二区三区| 国产一区不卡精品| 色综合天天综合狠狠| 在线观看91精品国产麻豆| 国产午夜一区二区三区| 亚洲主播在线观看| 国产精品资源在线看| 欧美在线观看视频在线| xvideos.蜜桃一区二区| 亚洲伦理在线精品| 精品亚洲porn| 欧美色综合网站| 欧美精品一区二| 亚洲综合图片区| 国产毛片精品国产一区二区三区| 色欧美88888久久久久久影院| 欧美一级片在线看| 中文字幕视频一区| 看片网站欧美日韩| 在线亚洲精品福利网址导航| 精品欧美久久久| 亚洲国产精品久久一线不卡| 国产成人三级在线观看| 7777精品伊人久久久大香线蕉完整版| 国产精品丝袜一区| 日韩和欧美一区二区| 成人国产精品免费观看| 欧美一级免费大片| 一区二区在线观看免费视频播放 | 青青青爽久久午夜综合久久午夜| 大陆成人av片| 欧美精品一区二区三| 亚洲国产欧美日韩另类综合| 不卡电影一区二区三区| 日韩精品一区二区三区视频 | 亚洲免费av在线| 国产91精品精华液一区二区三区| 91 com成人网| 亚洲中国最大av网站| 99久久精品久久久久久清纯| 久久夜色精品国产欧美乱极品| 亚洲国产另类av| 色综合色综合色综合色综合色综合| 2023国产一二三区日本精品2022| 日韩精品福利网| 欧美在线不卡视频| 亚洲人123区| 成人av资源站| 国产欧美精品一区aⅴ影院 | 国产精品区一区二区三区| 韩国v欧美v日本v亚洲v| 日韩亚洲欧美成人一区| 午夜免费久久看| 欧美日韩一区二区在线观看视频 | 欧美色成人综合| 亚洲宅男天堂在线观看无病毒| 99久久久久免费精品国产| 国产精品天天摸av网| 粉嫩av一区二区三区| 亚洲一区二区高清| 色综合色综合色综合| 中文字幕一区二区三区视频| 成人美女视频在线看| 国产欧美日韩精品一区| 国产成人三级在线观看| 国产亚洲欧美激情| 夫妻av一区二区| 亚洲欧洲精品天堂一级| 91在线视频官网| 夜夜嗨av一区二区三区四季av | 91影院在线观看| 亚洲精品视频自拍| 日本高清不卡在线观看| 一区二区三区国产| 欧美挠脚心视频网站| 日本女人一区二区三区| 欧美大片拔萝卜| 国产馆精品极品| 成人免费在线播放视频| 在线看不卡av| 日韩1区2区日韩1区2区| 精品少妇一区二区三区在线播放| 国产一区二区三区在线观看精品 | 悠悠色在线精品| 欧美日韩亚洲高清一区二区| 日本亚洲最大的色成网站www| 精品剧情在线观看| 成人免费的视频| 亚洲激情男女视频| 欧美一区三区二区| 国产一区久久久| 亚洲视频1区2区| 91精品国产aⅴ一区二区| 国产一区啦啦啦在线观看| 国产精品福利一区二区三区| 在线免费观看日韩欧美| 久久av中文字幕片| 国产精品久久久久婷婷| 欧美色涩在线第一页| 国产在线精品免费av| 亚洲日本一区二区三区| 3atv在线一区二区三区| 国产成人亚洲精品狼色在线| 一区二区视频在线看| 精品国产乱码久久| 色综合久久天天| 久久成人免费网| 亚洲精品亚洲人成人网| 久久综合一区二区| 日本大香伊一区二区三区| 国产在线日韩欧美| 亚洲自拍与偷拍| 国产欧美日韩亚州综合| 欧美日韩精品一区二区在线播放| 国产 日韩 欧美大片| 亚洲超碰精品一区二区| 中文成人综合网| 日韩欧美一级在线播放| 日本丰满少妇一区二区三区| 国产一区二区日韩精品| 婷婷六月综合亚洲| 亚洲天堂精品在线观看| 久久品道一品道久久精品| 精品1区2区3区| 99久久久国产精品免费蜜臀| 精品一区二区久久久| 亚洲午夜精品在线| 中文欧美字幕免费| 精品久久久久久久一区二区蜜臀| 欧美日韩一区久久| 99视频超级精品|