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

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

?? xuartlite_intr.c

?? <基于fpga的嵌入式設(shè)計(jì)上的光盤的第四章第二個(gè)實(shí)驗(yàn)
?? C
字號(hào):
/* $Id: xuartlite_intr.c,v 1.1 2006/02/17 22:36:36 moleres Exp $ *//*******************************************************************************       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND*       SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,*       OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,*       APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION*       THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,*       AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE*       FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY*       WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE*       IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR*       REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF*       INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS*       FOR A PARTICULAR PURPOSE.**       (c) Copyright 2002 Xilinx Inc.*       All rights reserved.******************************************************************************//****************************************************************************//**** @file xuartlite_intr.c** This file contains interrupt-related functions for the UART Lite component* (XUartLite).** <pre>* MODIFICATION HISTORY:** Ver   Who  Date     Changes* ----- ---- -------- -----------------------------------------------* 1.00a ecm  08/31/01 First release* 1.00b jhl  02/21/02 Repartitioned the driver for smaller files* </pre>******************************************************************************//***************************** Include Files ********************************/#include "xbasic_types.h"#include "xuartlite.h"#include "xuartlite_i.h"#include "xio.h"/************************** Constant Definitions ****************************//**************************** Type Definitions ******************************//***************** Macros (Inline Functions) Definitions ********************//************************** Function Prototypes *****************************/static void ReceiveDataHandler(XUartLite *InstancePtr);static void SendDataHandler(XUartLite *InstancePtr);/************************** Variable Definitions ****************************/typedef void (*Handler)(XUartLite *InstancePtr);/****************************************************************************//**** This function sets the handler that will be called when an event (interrupt)* occurs in the driver. The purpose of the handler is to allow application* specific processing to be performed.** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.* @param    FuncPtr is the pointer to the callback function.* @param    CallBackRef is the upper layer callback reference passed back when*           the callback function is invoked.** @return** None.** @notes** There is no assert on the CallBackRef since the driver doesn't know what it* is (nor should it)******************************************************************************/void XUartLite_SetRecvHandler(XUartLite *InstancePtr,                              XUartLite_Handler FuncPtr, void *CallBackRef){    /*     * Assert validates the input arguments     * CallBackRef not checked, no way to know what is valid     */    XASSERT_VOID(InstancePtr != XNULL);    XASSERT_VOID(FuncPtr != XNULL);    XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);    InstancePtr->RecvHandler = FuncPtr;    InstancePtr->RecvCallBackRef = CallBackRef;}/****************************************************************************//**** This function sets the handler that will be called when an event (interrupt)* occurs in the driver. The purpose of the handler is to allow application* specific processing to be performed.** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.* @param    FuncPtr is the pointer to the callback function.* @param    CallBackRef is the upper layer callback reference passed back when*           the callback function is invoked.** @return** None.** @notes** There is no assert on the CallBackRef since the driver doesn't know what it* is (nor should it)******************************************************************************/void XUartLite_SetSendHandler(XUartLite *InstancePtr,                              XUartLite_Handler FuncPtr, void *CallBackRef){    /*     * Assert validates the input arguments     * CallBackRef not checked, no way to know what is valid     */    XASSERT_VOID(InstancePtr != XNULL);    XASSERT_VOID(FuncPtr != XNULL);    XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);    InstancePtr->SendHandler = FuncPtr;    InstancePtr->SendCallBackRef = CallBackRef;}/****************************************************************************//**** This function is the interrupt handler for the UART lite driver.* It must be connected to an interrupt system by the user such that it is* called when an interrupt for any UART lite occurs. This function* does not save or restore the processor context such that the user must* ensure this occurs.** @param    InstancePtr contains a pointer to the instance of the UART that*           the interrupt is for.** @return** None.** @note** None.*******************************************************************************/void XUartLite_InterruptHandler(XUartLite *InstancePtr){    Xuint32 IsrStatus;    XASSERT_VOID(InstancePtr != XNULL);    /* Read the status register to determine which, coulb be both     * interrupt is active     */    IsrStatus = XIo_In32(InstancePtr->RegBaseAddress + XUL_STATUS_REG_OFFSET);    if ((IsrStatus & (XUL_SR_RX_FIFO_FULL | XUL_SR_RX_FIFO_VALID_DATA)) != 0)    {        ReceiveDataHandler(InstancePtr);    }    if ((IsrStatus & XUL_SR_TX_FIFO_EMPTY) != 0)    {        SendDataHandler(InstancePtr);    }}/****************************************************************************//**** This function handles the interrupt when data is received, either a single* byte when FIFOs are not enabled, or multiple bytes with the FIFO.** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.** @return** None.** @note** None.******************************************************************************/static void ReceiveDataHandler(XUartLite *InstancePtr){    /*     * If there are bytes still to be received in the specified buffer     * go ahead and receive them     */    if (InstancePtr->ReceiveBuffer.RemainingBytes != 0)    {        XUartLite_ReceiveBuffer(InstancePtr);    }    /* If the last byte of a message was received then call the application     * handler, this code should not use an else from the previous check of     * the number of bytes to receive because the call to receive the buffer     * updates the bytes to receive     */    if (InstancePtr->ReceiveBuffer.RemainingBytes == 0)    {        InstancePtr->RecvHandler(InstancePtr->RecvCallBackRef,                                 InstancePtr->ReceiveBuffer.RequestedBytes -                                 InstancePtr->ReceiveBuffer.RemainingBytes);    }    /* Update the receive stats to reflect the receive interrupt */    InstancePtr->Stats.ReceiveInterrupts++;}/****************************************************************************//**** This function handles the interrupt when data has been sent, the transmit* FIFO is empty (transmitter holding register).** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.** @return** None.** @note** None.******************************************************************************/static void SendDataHandler(XUartLite *InstancePtr){    /*     * If there are not bytes to be sent from the specified buffer ,     * call the callback function     */    if (InstancePtr->SendBuffer.RemainingBytes == 0)    {        /* Call the application handler to indicate the data has been sent */        InstancePtr->SendHandler(InstancePtr->SendCallBackRef,                                 InstancePtr->SendBuffer.RequestedBytes -                                 InstancePtr->SendBuffer.RemainingBytes);    }    /*     * Otherwise there is still more data to send in the specified buffer     * so go ahead and send it     */    else    {        XUartLite_SendBuffer(InstancePtr);    }    /* Update the transmit stats to reflect the transmit interrupt */    InstancePtr->Stats.TransmitInterrupts++;}/*****************************************************************************//**** This function disables the UART interrupt. After calling this function,* data may still be received by the UART but no interrupt will be generated* since the hardware device has no way to disable the receiver.** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.** @return** None.** @note** None.******************************************************************************/void XUartLite_DisableInterrupt(XUartLite *InstancePtr){    XASSERT_VOID(InstancePtr != XNULL);    XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);    /* Write to the control register to disable the interrupts, the only other     * bits in this register are the FIFO reset bits such that writing them     * to zero will not affect them.     */    XIo_Out32(InstancePtr->RegBaseAddress + XUL_CONTROL_REG_OFFSET, 0);}/*****************************************************************************//**** This function enables the UART interrupt such that an interrupt will occur* when data is received or data has been transmitted.  The device contains* 16 byte receive and transmit FIFOs such that an interrupt is generated* anytime there is data in the receive FIFO and when the transmit FIFO* transitions from not empty to empty.** @param    InstancePtr is a pointer to the XUartLite instance to be worked on.** @return** None.** @note** None.******************************************************************************/void XUartLite_EnableInterrupt(XUartLite *InstancePtr){    XASSERT_VOID(InstancePtr != XNULL);    XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);    /* Write to the control register to enable the interrupts, the only other     * bits in this register are the FIFO reset bits such that writing them     * to zero will not affect them.     */    XIo_Out32(InstancePtr->RegBaseAddress + XUL_CONTROL_REG_OFFSET,              XUL_CR_ENABLE_INTR);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美乱综合| 国产精品久久久久久久久久久免费看| 亚洲精品成人精品456| 91麻豆精品国产91久久久久久久久 | 92精品国产成人观看免费| 午夜一区二区三区视频| 欧美经典一区二区三区| 69p69国产精品| 日韩国产在线一| 1区2区3区精品视频| 久久天堂av综合合色蜜桃网| 日韩一区二区三区免费观看| 91麻豆国产福利精品| 国产91精品一区二区| 久久国产日韩欧美精品| 日韩av中文字幕一区二区| 一区二区三区在线视频观看| 久久中文娱乐网| 中文在线一区二区| 亚洲综合激情另类小说区| 午夜一区二区三区视频| 国产乱人伦偷精品视频不卡| av一区二区三区四区| 欧美日韩国产色站一区二区三区| 欧美一区二区三区性视频| 久久久精品免费免费| 亚洲精品老司机| 免费成人你懂的| 成人av片在线观看| 3d动漫精品啪啪| 国产精品久久久久久久久久久免费看| 亚洲午夜私人影院| 国产一区激情在线| 欧美日韩一区 二区 三区 久久精品| 日韩美一区二区三区| 18欧美乱大交hd1984| 久久精品国产亚洲一区二区三区 | 成人激情校园春色| 在线欧美小视频| 国产丝袜欧美中文另类| 亚洲va韩国va欧美va| 99久久综合狠狠综合久久| 91精品国产综合久久香蕉的特点| 精品电影一区二区三区| 一区二区三区在线高清| 国产一区二区三区黄视频| 欧美亚洲国产bt| 中文文精品字幕一区二区| 麻豆成人91精品二区三区| 欧美怡红院视频| 国产精品理伦片| 国内精品嫩模私拍在线| 91精品国产手机| 亚洲精品日韩专区silk| 波多野结衣欧美| 久久日一线二线三线suv| 五月婷婷久久丁香| 色欧美88888久久久久久影院| 久久久久88色偷偷免费| 韩国欧美一区二区| 日韩天堂在线观看| 亚洲一区二区三区影院| 99视频精品在线| 亚洲色大成网站www久久九九| 久久99深爱久久99精品| 日韩视频免费观看高清完整版在线观看 | 精品国产电影一区二区| 亚洲成人7777| 欧美午夜一区二区三区免费大片| 亚洲精品免费一二三区| 91亚洲精品久久久蜜桃| 亚洲人妖av一区二区| www.日韩大片| 亚洲丝袜另类动漫二区| 成人av在线资源| 亚洲少妇中出一区| 日本久久电影网| 亚洲成av人片在www色猫咪| 欧美中文字幕亚洲一区二区va在线| 亚洲伦在线观看| 欧美三级午夜理伦三级中视频| 亚洲成国产人片在线观看| 欧美日韩国产区一| 久久狠狠亚洲综合| 精品国产乱码久久久久久图片| 国产成人啪午夜精品网站男同| 久久久一区二区| 成人av中文字幕| 一区二区在线观看不卡| 欧美亚洲国产一卡| 日韩激情视频在线观看| 欧美一区二区在线免费观看| 麻豆成人91精品二区三区| 国产欧美日韩综合| 大桥未久av一区二区三区中文| 欧美国产精品久久| 色天使色偷偷av一区二区| 中文字幕在线观看一区| 欧美三日本三级三级在线播放| 日韩和欧美一区二区| 国产日韩成人精品| 91豆麻精品91久久久久久| 日韩成人伦理电影在线观看| 日韩精品中文字幕一区| 99精品视频在线播放观看| 首页综合国产亚洲丝袜| 久久久亚洲午夜电影| 91国产视频在线观看| 日本中文字幕一区二区有限公司| 久久久.com| 欧美视频精品在线| 国产成人精品综合在线观看| 亚洲综合在线五月| 国产偷国产偷精品高清尤物| 欧美亚洲精品一区| 国产成人av福利| 午夜私人影院久久久久| 国产精品亲子乱子伦xxxx裸| 777午夜精品视频在线播放| av网站一区二区三区| 日本成人超碰在线观看| 一区二区三区不卡视频在线观看| 精品乱人伦一区二区三区| 在线视频一区二区三| 国产精品影视网| 日本vs亚洲vs韩国一区三区二区| 中文字幕一区二区三区色视频| 日韩欧美国产电影| 欧美三级在线播放| 99re视频精品| 粉嫩在线一区二区三区视频| 久久成人精品无人区| 日韩激情视频在线观看| 亚洲国产综合人成综合网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | eeuss影院一区二区三区| 精品一区二区av| 免播放器亚洲一区| 丝袜美腿亚洲色图| 亚洲va在线va天堂| 亚洲午夜三级在线| 亚洲免费av高清| 亚洲男人的天堂在线aⅴ视频| 欧美激情一区二区三区不卡 | 国产精品无遮挡| 欧美激情在线看| 亚洲国产精品二十页| 中文天堂在线一区| 国产精品不卡视频| 一区二区中文视频| 中文字幕一区免费在线观看| 国产精品久久久一本精品| 国产欧美一区二区精品仙草咪| 欧美电影免费观看完整版| 91.xcao| 欧美一区午夜精品| 日韩一区二区三| 精品国产凹凸成av人导航| 欧美www视频| 国产欧美一区二区精品性| 中文字幕中文乱码欧美一区二区| 亚洲国产成人在线| 亚洲欧洲韩国日本视频| 一区二区三区在线视频观看| 亚洲一区中文日韩| 日本视频一区二区三区| 精品一区二区三区免费播放| 国产高清不卡二三区| 91丨porny丨在线| 色综合天天综合色综合av | eeuss鲁片一区二区三区在线看| 丁香婷婷综合五月| 色婷婷亚洲一区二区三区| 欧美日韩黄色一区二区| 日韩欧美二区三区| 国产欧美中文在线| 一区二区三区中文字幕| 日韩av一区二区三区四区| 精品影院一区二区久久久| 99视频热这里只有精品免费| 欧美视频日韩视频在线观看| 久久综合一区二区| 亚洲激情自拍偷拍| 国内精品自线一区二区三区视频| 成人在线综合网站| 精品1区2区3区| 久久夜色精品一区| 尤物在线观看一区| 麻豆精品视频在线观看| 国产jizzjizz一区二区| 欧美日韩五月天| 欧美成人猛片aaaaaaa| 亚洲婷婷综合色高清在线| 日本欧美大码aⅴ在线播放| 成人一二三区视频| 欧美一区2区视频在线观看| 国产精品久久三区| 精品综合免费视频观看| 欧美专区日韩专区| 国产精品久久久久久久久免费丝袜 |