⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xintc_l.h

📁 基于Xilinx-XUPV2P开发平台的嵌入式系统实验例程:实验5高级应用程序编写
💻 H
字号:
/* $Id: xintc_l.h,v 1.3.12.1 2005/09/07 22:56:32 trujillo 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-2003 Xilinx Inc.*       All rights reserved.*******************************************************************************//*****************************************************************************//**** @file xintc_l.h** This header file contains identifiers and low-level driver functions (or* macros) that can be used to access the device.  The user should refer to the* hardware device specification for more details of the device operation.* High-level driver functions are defined in xintc.h.** Note that users of this Level 0 driver interface can register an interrupt* handler dynamically (at run-time) using the XIntc_RegisterHandler() function.* User of the Level 1 xintc driver interface should still use XIntc_Connect(),* as always.  Also see the discussion of the interrupt vector tables in* xintc.h.** There are currently two interrupt handlers specified in this interface.** - XIntc_LowLevelInterruptHandler() is a handler without any arguments that*   is used in cases where there is a single interrupt controller device in*   the system and the handler cannot be passed an argument. This function is*   provided mostly for backward compatibility.** - XIntc_DeviceInterruptHandler() is a handler that takes a device ID as an*   argument, indicating which interrupt controller device in the system is*   causing the interrupt - thereby supporting multiple interrupt controllers.** <pre>* MODIFICATION HISTORY:** Ver   Who  Date     Changes* ----- ---- -------- -----------------------------------------------------* 1.00b jhl  04/24/02 First release* 1.00c rpm  10/17/03 New release. Support the static vector table created*                     in the xintc_g.c configuration table.* </pre>*******************************************************************************/#ifndef XINTC_L_H /* prevent circular inclusions */#define XINTC_L_H /* by using protection macros */#ifdef __cplusplusextern "C" {#endif/***************************** Include Files *********************************/#include "xbasic_types.h"#include "xparameters.h"#include "xio.h"#if (XPAR_XINTC_USE_DCR != 0)#include "xio_dcr.h"#endif/************************** Constant Definitions *****************************//* define the offsets from the base address for all the registers of the * interrupt controller, some registers may be optional in the hardware device */#if (XPAR_XINTC_USE_DCR != 0)#define XIN_ISR_OFFSET      0       /* Interrupt Status Register */#define XIN_IPR_OFFSET      1       /* Interrupt Pending Register */#define XIN_IER_OFFSET      2       /* Interrupt Enable Register */#define XIN_IAR_OFFSET      3       /* Interrupt Acknowledge Register */#define XIN_SIE_OFFSET      4       /* Set Interrupt Enable Register */#define XIN_CIE_OFFSET      5       /* Clear Interrupt Enable Register */#define XIN_IVR_OFFSET      6       /* Interrupt Vector Register */#define XIN_MER_OFFSET      7       /* Master Enable Register */#else /*(XPAR_XINTC_USE_DCR != 0)*/#define XIN_ISR_OFFSET      0       /* Interrupt Status Register */#define XIN_IPR_OFFSET      4       /* Interrupt Pending Register */#define XIN_IER_OFFSET      8       /* Interrupt Enable Register */#define XIN_IAR_OFFSET      12      /* Interrupt Acknowledge Register */#define XIN_SIE_OFFSET      16      /* Set Interrupt Enable Register */#define XIN_CIE_OFFSET      20      /* Clear Interrupt Enable Register */#define XIN_IVR_OFFSET      24      /* Interrupt Vector Register */#define XIN_MER_OFFSET      28      /* Master Enable Register */#endif /*(XPAR_XINTC_USE_DCR != 0)*//* Bit definitions for the bits of the MER register */#define XIN_INT_MASTER_ENABLE_MASK      0x1UL#define XIN_INT_HARDWARE_ENABLE_MASK    0x2UL /* once set cannot be cleared *//**************************** Type Definitions *******************************//* The following data type defines each entry in an interrupt vector table. * The callback reference is the base address of the interrupting device * for the low level driver and an instance pointer for the high level driver. */typedef struct{    XInterruptHandler Handler;    void *CallBackRef;} XIntc_VectorTableEntry;/***************** Macros (Inline Functions) Definitions *********************//* * Define the appropriate I/O access method to memory mapped I/O or DCR. */#if (XPAR_XINTC_USE_DCR != 0)#define XIntc_In32  XIo_DcrIn#define XIntc_Out32 XIo_DcrOut#else#define XIntc_In32  XIo_In32#define XIntc_Out32 XIo_Out32#endif/****************************************************************************//**** Enable all interrupts in the Master Enable register of the interrupt* controller.  The interrupt controller defaults to all interrupts disabled* from reset such that this macro must be used to enable interrupts.** @param    BaseAddress is the base address of the device.** @return   None.** @note** Signature: void XIntc_mMasterEnable(Xuint32 BaseAddress)******************************************************************************/#define XIntc_mMasterEnable(BaseAddress) \    XIntc_Out32((BaseAddress) + XIN_MER_OFFSET, \              XIN_INT_MASTER_ENABLE_MASK | XIN_INT_HARDWARE_ENABLE_MASK)/****************************************************************************//**** Disable all interrupts in the Master Enable register of the interrupt* controller.** @param    BaseAddress is the base address of the device.** @return   None.** @note** Signature: void XIntc_mMasterDisable(Xuint32 BaseAddress)******************************************************************************/#define XIntc_mMasterDisable(BaseAddress) \    XIntc_Out32((BaseAddress) + XIN_MER_OFFSET, 0)/****************************************************************************//**** Enable specific interrupt(s) in the interrupt controller.** @param    BaseAddress is the base address of the device* @param    EnableMask is the 32-bit value to write to the enable register.*           Each bit of the mask corresponds to an interrupt input signal that*           is connected to the interrupt controller (INT0 = LSB). Only the*           bits which are set in the mask will enable interrupts.** @return   None.** @note** Signature: void XIntc_mEnableIntr(Xuint32 BaseAddress, Xuint32 EnableMask)******************************************************************************/#define XIntc_mEnableIntr(BaseAddress, EnableMask) \    XIntc_Out32((BaseAddress) + XIN_IER_OFFSET, (EnableMask))/****************************************************************************//**** Disable specific interrupt(s) in the interrupt controller.** @param    BaseAddress is the base address of the device* @param    DisableMask is the 32-bit value to write to the enable register.*           Each bit of the mask corresponds to an interrupt input signal that*           is connected to the interrupt controller (INT0 = LSB).  Only the*           bits which are set in the mask will disable interrupts.** @return   None.** @note** Signature: void XIntc_mDisableIntr(Xuint32 BaseAddress, Xuint32 DisableMask)******************************************************************************/#define XIntc_mDisableIntr(BaseAddress, DisableMask) \    XIntc_Out32((BaseAddress) + XIN_IER_OFFSET, ~(DisableMask))/****************************************************************************//**** Acknowledge specific interrupt(s) in the interrupt controller.** @param    BaseAddress is the base address of the device* @param    AckMask is the 32-bit value to write to the acknowledge register.*           Each bit of the mask corresponds to an interrupt input signal that*           is connected to the interrupt controller (INT0 = LSB).  Only the*           bits which are set in the mask will acknowledge interrupts.** @return   None.** @note** Signature: void XIntc_mAckIntr(Xuint32 BaseAddress, Xuint32 AckMask)******************************************************************************/#define XIntc_mAckIntr(BaseAddress, AckMask) \    XIntc_Out32((BaseAddress) + XIN_IAR_OFFSET, (AckMask))/****************************************************************************//**** Get the interrupt status from the interrupt controller which indicates* which interrupts are active and enabled.** @param    BaseAddress is the base address of the device** @return   The 32-bit contents of the interrupt status register. Each bit*           corresponds to an interrupt input signal that is connected to the*           interrupt controller (INT0 = LSB). Bits which are set indicate an*           active interrupt which is also enabled.** @note** Signature: Xuint32 XIntc_mGetIntrStatus(Xuint32 BaseAddress)******************************************************************************/#define XIntc_mGetIntrStatus(BaseAddress) \    (XIntc_In32((BaseAddress) + XIN_ISR_OFFSET) & \     XIntc_In32((BaseAddress) + XIN_IER_OFFSET))/************************** Function Prototypes ******************************//* * Interrupt controller handlers, to be connected to processor exception * handling code. */void XIntc_LowLevelInterruptHandler(void);void XIntc_DeviceInterruptHandler(void *DeviceId);/* Various configuration functions */void XIntc_SetIntrSvcOption(Xuint32 BaseAddress, int Option);void XIntc_RegisterHandler(Xuint32 BaseAddress, int InterruptId,                           XInterruptHandler Handler, void *CallBackRef);/************************** Variable Definitions *****************************/#ifdef __cplusplus}#endif#endif            /* end of protection macro */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -