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

📄 csl_intc.h

📁 TMS320DM6446平台下
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _CSL_INTC_H_#define _CSL_INTC_H_#ifdef __cplusplusextern "C" {#endif#include <cslr.h>#include <csl_error.h>#include <csl_types.h>//#include <_csl_intc0.h>//#include <_csl_intc1.h>/* Interrupt/Exception Counts */#define _CSL_INTC_EVENTID__INTC0CNT     (8)      /* ARM exception count */#define _CSL_INTC_EVENTID__INTC1CNT     (64)     /* Level-1 Interrupt count *//** * @brief   Count of the number of interrupt-events */#define CSL_INTC_EVENTID_CNT        \    (_CSL_INTC_EVENTID__INTC0CNT + _CSL_INTC_EVENTID__INTC1CNT)/** * @brief   Indicates there is no associated event-handler */#define CSL_INTC_EVTHANDLER_NONE        ((CSL_IntcEventHandlerRecord *) 0)/** * @brief   Invalid handle */#define CSL_INTC_BADHANDLE        (0)/** * @brief   Interrupt Vector IDs */typedef enum {    CSL_INTC_VECTID_DEFAULT   =   0,  /**< default vector */    CSL_INTC_VECTID_INVALID   =  -1,  /**< invalid vector *//* for use only with HookIsr -- by design! */    CSL_INTC_VECTID_RESET     =   1,  /**< the RESET exception vector */    CSL_INTC_VECTID_UNDEF     =   2,  /**< the UNDEF exception vector */    CSL_INTC_VECTID_SWI       =   3,  /**< the SWI exception vector */    CSL_INTC_VECTID_PREABT    =   4,  /**< the PREABT exception vector */    CSL_INTC_VECTID_DATABT    =   5,  /**< the DATABT exception vector */    CSL_INTC_VECTID_IRQ       =   7,  /**< the IRQ exception vector */    CSL_INTC_VECTID_FIQ       =   8   /**< the FIQ exception vector */} CSL_IntcVectId;/** * @brief   Interrupt Event IDs */typedef enum {    _CSL_INTC_EVENTID__SPURIOUS         =   0,    _CSL_INTC_EVENTID__INTC1START       =   1,    CSL_INTC_EVENTID_VDINT0           =   _CSL_INTC_EVENTID__INTC1START + 0,  /**< VPSS - CCDC */    CSL_INTC_EVENTID_VDINT1           =   _CSL_INTC_EVENTID__INTC1START + 1,  /**< VPSS - CCDC */    CSL_INTC_EVENTID_VDINT2           =   _CSL_INTC_EVENTID__INTC1START + 2,  /**< VPSS - CCDC */    CSL_INTC_EVENTID_HISTINT          =   _CSL_INTC_EVENTID__INTC1START + 3,  /**< VPSS - Histogram */    CSL_INTC_EVENTID_H3AINT           =   _CSL_INTC_EVENTID__INTC1START + 4,  /**< VPSS - AE/AWB/AF */    CSL_INTC_EVENTID_PRVUINT          =   _CSL_INTC_EVENTID__INTC1START + 5,  /**< VPSS - Previewer */    CSL_INTC_EVENTID_RSZINT           =   _CSL_INTC_EVENTID__INTC1START + 6,  /**< VPSS - Resizer */    CSL_INTC_EVENTID_VFOCINT          =   _CSL_INTC_EVENTID__INTC1START + 7,  /**< VPSS - Focus */    CSL_INTC_EVENTID_VENCINT          =   _CSL_INTC_EVENTID__INTC1START + 8,  /**< VPSS - VPBE */    CSL_INTC_EVENTID_ASQINT           =   _CSL_INTC_EVENTID__INTC1START + 9,  /**< IMCOP - Sqr */    CSL_INTC_EVENTID_IMXINT           =   _CSL_INTC_EVENTID__INTC1START + 10, /**< IMCOP - iMX */    CSL_INTC_EVENTID_VLCDINT          =   _CSL_INTC_EVENTID__INTC1START + 11, /**< IMCOP - VLCD */    CSL_INTC_EVENTID_USBINT           =   _CSL_INTC_EVENTID__INTC1START + 12, /**< USB OTG Collector */    CSL_INTC_EVENTID_EMACINT          =   _CSL_INTC_EVENTID__INTC1START + 13, /**< CPGMAC Wrapper */    CSL_INTC_EVENTID_1394INT          =   _CSL_INTC_EVENTID__INTC1START + 14, /**< IEEE1394 */    CSL_INTC_EVENTID_1394WK           =   _CSL_INTC_EVENTID__INTC1START + 15, /**< IEEE1394WK */    CSL_INTC_EVENTID_CCINT0           =   _CSL_INTC_EVENTID__INTC1START + 16, /**< 3PCC Region 0 */    CSL_INTC_EVENTID_CCERRINT         =   _CSL_INTC_EVENTID__INTC1START + 17, /**< 3PCC Error */    CSL_INTC_EVENTID_TCERRINT0        =   _CSL_INTC_EVENTID__INTC1START + 18, /**< 3PTC0 Error */    CSL_INTC_EVENTID_TCERRINT1        =   _CSL_INTC_EVENTID__INTC1START + 19, /**< 3PTC1 Error */    CSL_INTC_EVENTID_PSCINIT          =   _CSL_INTC_EVENTID__INTC1START + 20, /**< PSC-ALLINT */    CSL_INTC_EVENTID_RSVD21           =   _CSL_INTC_EVENTID__INTC1START + 21, /**< Reserved */    CSL_INTC_EVENTID_IDEINT           =   _CSL_INTC_EVENTID__INTC1START + 22, /**< ATA/IDE*/    CSL_INTC_EVENTID_HPIINT           =   _CSL_INTC_EVENTID__INTC1START + 23, /**< UHPI*/    CSL_INTC_EVENTID_MBXINT           =   _CSL_INTC_EVENTID__INTC1START + 24, /**< McBSP */    CSL_INTC_EVENTID_MBRINT           =   _CSL_INTC_EVENTID__INTC1START + 25, /**< McBSP */    CSL_INTC_EVENTID_MMCINT           =   _CSL_INTC_EVENTID__INTC1START + 26, /**< MMC/SD */    CSL_INTC_EVENTID_SDIOINT          =   _CSL_INTC_EVENTID__INTC1START + 27, /**< MMC/SD */    CSL_INTC_EVENTID_MSINT            =   _CSL_INTC_EVENTID__INTC1START + 28, /**< Memory Stick */    CSL_INTC_EVENTID_DDRINT           =   _CSL_INTC_EVENTID__INTC1START + 29, /**< DDR EMIF */    CSL_INTC_EVENTID_AEMIFINT         =   _CSL_INTC_EVENTID__INTC1START + 30, /**< Async EMIF */    CSL_INTC_EVENTID_VLQINT           =   _CSL_INTC_EVENTID__INTC1START + 31, /**< VLYNQ */    CSL_INTC_EVENTID_TINT0            =   _CSL_INTC_EVENTID__INTC1START + 32, /**< Timer 0 - TINT12 */    CSL_INTC_EVENTID_TINT1            =   _CSL_INTC_EVENTID__INTC1START + 33, /**< Timer 0 - TINT34 */    CSL_INTC_EVENTID_TINT2            =   _CSL_INTC_EVENTID__INTC1START + 34, /**< Timer 1 - TINT12 */    CSL_INTC_EVENTID_TINT3            =   _CSL_INTC_EVENTID__INTC1START + 35, /**< Timer 2 - TINT34 */    CSL_INTC_EVENTID_PWMINT0          =   _CSL_INTC_EVENTID__INTC1START + 36, /**< PWM0 */    CSL_INTC_EVENTID_PWMINT1          =   _CSL_INTC_EVENTID__INTC1START + 37, /**< PWM1 */    CSL_INTC_EVENTID_PWMINT2          =   _CSL_INTC_EVENTID__INTC1START + 38, /**< PWM2 */    CSL_INTC_EVENTID_I2CINT           =   _CSL_INTC_EVENTID__INTC1START + 39, /**< I2C */    CSL_INTC_EVENTID_UARTINT0         =   _CSL_INTC_EVENTID__INTC1START + 40, /**< UART0 */    CSL_INTC_EVENTID_UARTINT1         =   _CSL_INTC_EVENTID__INTC1START + 41, /**< UART1 */    CSL_INTC_EVENTID_UARTINT2         =   _CSL_INTC_EVENTID__INTC1START + 42, /**< UART2 */    CSL_INTC_EVENTID_SPINT0           =   _CSL_INTC_EVENTID__INTC1START + 43, /**< SPI */    CSL_INTC_EVENTID_SPINT1           =   _CSL_INTC_EVENTID__INTC1START + 44, /**< SPI */    CSL_INTC_EVENTID_WDTINT           =   _CSL_INTC_EVENTID__INTC1START + 45, /**< Timer 3 - TINT12 */    CSL_INTC_EVENTID_DSP2ARM0         =   _CSL_INTC_EVENTID__INTC1START + 46, /**< DSP Controller */    CSL_INTC_EVENTID_DSP2ARM1         =   _CSL_INTC_EVENTID__INTC1START + 47, /**< DSP Controller */    CSL_INTC_EVENTID_GPIO0            =   _CSL_INTC_EVENTID__INTC1START + 48, /**< GPIO */    CSL_INTC_EVENTID_GPIO1            =   _CSL_INTC_EVENTID__INTC1START + 49, /**< GPIO */    CSL_INTC_EVENTID_GPIO2            =   _CSL_INTC_EVENTID__INTC1START + 50, /**< GPIO */    CSL_INTC_EVENTID_GPIO3            =   _CSL_INTC_EVENTID__INTC1START + 51, /**< GPIO */    CSL_INTC_EVENTID_GPIO4            =   _CSL_INTC_EVENTID__INTC1START + 52, /**< GPIO */    CSL_INTC_EVENTID_GPIO5            =   _CSL_INTC_EVENTID__INTC1START + 53, /**< GPIO */    CSL_INTC_EVENTID_GPIO6            =   _CSL_INTC_EVENTID__INTC1START + 54, /**< GPIO */    CSL_INTC_EVENTID_GPIO7            =   _CSL_INTC_EVENTID__INTC1START + 55, /**< GPIO */    CSL_INTC_EVENTID_GPIOBNK0         =   _CSL_INTC_EVENTID__INTC1START + 56, /**< GPIO */    CSL_INTC_EVENTID_GPIOBNK1         =   _CSL_INTC_EVENTID__INTC1START + 57, /**< GPIO */    CSL_INTC_EVENTID_GPIOBNK2         =   _CSL_INTC_EVENTID__INTC1START + 58, /**< GPIO */    CSL_INTC_EVENTID_GPIOBNK3         =   _CSL_INTC_EVENTID__INTC1START + 59, /**< GPIO */    CSL_INTC_EVENTID_GPIOBNK4         =   _CSL_INTC_EVENTID__INTC1START + 60, /**< GPIO */    CSL_INTC_EVENTID_COMMTX           =   _CSL_INTC_EVENTID__INTC1START + 61, /**< ARMSS */    CSL_INTC_EVENTID_COMMRX           =   _CSL_INTC_EVENTID__INTC1START + 62, /**< ARMSS */    CSL_INTC_EVENTID_EMUINT           =   _CSL_INTC_EVENTID__INTC1START + 63, /**< E2ICE */    _CSL_INTC_EVENTID__INTC1END       =   _CSL_INTC_EVENTID__INTC1START + _CSL_INTC_EVENTID__INTC1CNT - 1,    _CSL_INTC_EVENTID__INTC0START       =   _CSL_INTC_EVENTID__INTC1END + 1,    CSL_INTC_EVENTID_RESET              =   _CSL_INTC_EVENTID__INTC0START + 0,  /**< the RESET exception vector */    CSL_INTC_EVENTID_UNDEF              =   _CSL_INTC_EVENTID__INTC0START + 1,  /**< the UNDEF exception vector */    CSL_INTC_EVENTID_SWI                =   _CSL_INTC_EVENTID__INTC0START + 2,  /**< the SWI exception vector */    CSL_INTC_EVENTID_PREABT             =   _CSL_INTC_EVENTID__INTC0START + 3,  /**< the PREABT exception vector */    CSL_INTC_EVENTID_DATABT             =   _CSL_INTC_EVENTID__INTC0START + 4,  /**< the DATABT exception vector */    CSL_INTC_EVENTID_IRQ                =   _CSL_INTC_EVENTID__INTC0START + 6,  /**< the IRQ exception vector */    CSL_INTC_EVENTID_FIQ                =   _CSL_INTC_EVENTID__INTC0START + 7,  /**< the FIQ exception vector */    _CSL_INTC_EVENTID__INTC0END         =   _CSL_INTC_EVENTID__INTC0START + _CSL_INTC_EVENTID__INTC0CNT - 1,    CSL_INTC_EVENTID_INVALID            =   -1                                  /**< Invalid Event-ID */} CSL_IntcEventId;/** * @brief   Interrupt Priority */typedef enum {        CSL_INTC_PRIORITY_DEFAULT   = 0,  /**< Default priority */    _CSL_INTC_PRIORITY__INTC1START     = 0,    CSL_INTC_PRIORITY_0         = 0 ,  /**< Priority 0 (FIQ, Highest) */    CSL_INTC_PRIORITY_1         = 1 ,  /**< Priority 1 (FIQ, Lowest) */    CSL_INTC_PRIORITY_2         = 2 ,  /**< Priority 2 (IRQ, Highest) */    CSL_INTC_PRIORITY_3         = 3 ,  /**< Priority 3 (IRQ) */    CSL_INTC_PRIORITY_4         = 4 ,  /**< Priority 4 (IRQ) */    CSL_INTC_PRIORITY_5         = 5 ,  /**< Priority 5 (IRQ) */    CSL_INTC_PRIORITY_6         = 6 ,  /**< Priority 6 (IRQ) */    CSL_INTC_PRIORITY_7         = 7 ,  /**< Priority 7 (IRQ, Lowest) */    _CSL_INTC_PRIORITY__INTC1END       = 7,    CSL_INTC_PRIORITY_INVALID    =   -1        /**< Invalid Priority */} CSL_IntcPriority;/** * @brief   Interrupt Type (Routing) */typedef enum {    CSL_INTC_TYPE_IRQ   = 0,    /**< IRQ -- normal interrupt request */    CSL_INTC_TYPE_FIQ   = 1     /**< FIQ -- fast interrupt request */} CSL_IntcType;/** * @brief   Enumeration of the control commands * * These are the control commands that could be used with * CSL_intcHwControl(..). Some of the commands expect an * argument as documented along-side the description of * the command. */typedef enum {    CSL_INTC_CMD_EVTENABLE,        /**<         * @brief   Enables the event         * @param   None         */    CSL_INTC_CMD_EVTDISABLE,        /**<         * @brief   Disables the event         * @param   None         */    CSL_INTC_CMD_SETPRIORITY,        /**<         * @brief   Modifies the interrupt priority         * @param   CSL_IntcPriority         */    CSL_INTC_CMD_SETPACE        /**<         * @brief   Not Supported         * @param   Not Applicable         */} CSL_IntcHwControlCmd;/** * @brief   Enumeration of the queries * * These are the queries that could be used with CSL_intcGetHwStatus(..). * The queries return a value through the object pointed to by the pointer * that it takes as an argument. The argument supported by the query is * documented along-side the description of the query. */typedef enum {    CSL_INTC_QUERY_PRIORITY,        /**<         * @brief   Retrieves the interrupt priority         * @param   (CSL_IntcPriority *)         */    CSL_INTC_QUERY_TYPE,        /**<         * @brief   Returns the type (route)         * @param   (CSL_IntcType *)         */    CSL_INTC_QUERY_ISEVENTPENDING        /**<         * @brief   Checks if event is pending         * @param   (Bool *)         */} CSL_IntcHwStatusQuery;/** * @brief   Event Handler pointer * * Event handlers ought to conform to this type */typedef void (* CSL_IntcEventHandler)(void *);/** * @brief   Event Handler Record * * Used to set-up the event-handler using CSL_intcPlugEventHandler(..) */typedef struct CSL_IntcEventHandlerRecord {    CSL_IntcEventHandler    handler;    /**< pointer to the event handler */    void *                  arg;        /**< the argument to be passed to the                                          handler when it is invoked */    CSL_IntcEventId         evtId;      /**< event Id */    Uint32                  dummy;      /**< dummy to fill 16 byte size entry */    /* Note: This structure should be of size 16 bytes */} CSL_IntcEventHandlerRecord;/** * @brief   The setup-structure * * Used to configure the interrupt controller for an event using * CSL_intcHwSetup(..) */typedef struct CSL_IntcHwSetup {    CSL_IntcPriority    priority;   /**< The interrupt priority */} CSL_IntcHwSetup;/** * @brief   Default values for the setup-parameters */#define CSL_INTC_HWSETUP_DEFAULTS {                 \    (CSL_IntcPriority) CSL_INTC_PRIORITY_DEFAULT   \}/** * @brief   Event enable state */typedef Uint8 CSL_IntcEventEnableState;/** * @brief   Global Interrupt enable state */typedef Uint8 CSL_IntcGlobalEnableState;/** * @brief   The interrupt handle object * * This object is used refenced by the handle to identify the event. */typedef struct CSL_IntcObj {    CSL_IntcEventId eventId;    /**< The event-id */    CSL_IntcVectId  vectId;     /**< The vector-id */    CSL_IntcPriority  priority; /**< The priority level */    void *          reserved;   /**< Reserved for the future */} CSL_IntcObj;/** * @brief   The interrupt handle * * This is returned by the CSL_intcOpen(..) API. The handle is used * to identify the event of interest in all INTC calls. */typedef struct CSL_IntcObj *    CSL_IntcHandle;/** * @brief   Intialize INTC module * * This API performs any module-specific initialization. CSL_intcInit(..) * must be invoked before calling any other API in the INTC module. * * @b Example: * @verbatim      CSL_sysInit( );      if (CSL_intcInit( ) != CSL_SOK) {        // module initialization failed! //      }     @endverbatim * * @return  CSL_SOK on success*/CSL_Status    CSL_intcInit (        void);/** * @brief   Allocates an event for use * * The API would reserve an interrupt-event for use. It returns * a valid handle to the event only if the event is not currently * allocated. The user could release the event after use by calling * CSL_intcClose(..). The CSL-object ('intcObj') that the user * passes would be used to store information pertaining handle. * * @b Example: * @verbatim        CSL_IntcObj     intcObj;        CSL_IntcHandle  hIntc;        CSL_Status      openStatus;          hIntc = CSL_intcOpen(&intcObj, CSL_INTC_EVENTID_TIMER3,                    CSL_INTC_VECTID_DEFAULT, NULL, &openStatus);        if (openStatus != CSL_SOK) {            // open failed //        }   @endverbatim * * @return  Handle identifying the event */CSL_IntcHandle    CSL_intcOpen (        CSL_IntcObj *       intcObj,    /**< pointer to the CSL-object allocated by the user */        CSL_IntcEventId     eventId,    /**< the event-id of the interrupt */        CSL_IntcVectId      vectId,     /**< the interrupt-vector */        CSL_IntcHwSetup *   setup,      /**< (optional) pointer to an optional setup-structure */        CSL_Status *        status      /**< (optional) pointer to a variable that would receive the status */);

⌨️ 快捷键说明

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