_csl_intc1.h

来自「dsp在音频处理中的运用」· C头文件 代码 · 共 441 行

H
441
字号
/*****************************************************\
 *  Copyright 2003, Texas Instruments Incorporated.  *
 *  All rights reserved.                             *
 *  Restricted rights to use, duplicate or disclose  *
 *  this   code   are  granted   through  contract.  *
 *                                                   *
 * "@(#) PSP/CSL  3.0.0.0  (2003-09-30)              *
\*****************************************************/

#ifndef _CSL_INTC1_H_
#define _CSL_INTC1_H_

#include <csl.h>
#include <soc.h>
#include <cslr_intc1.h>

/**************************************************************************\
* INTC1 global macro declarations
\**************************************************************************/

#define _CSL_INTC1_EVT_CNT                             (32)
 /* Number of Events                                             */

/**************************************************************************\
* INTC1 global typedef declarations
\**************************************************************************/
/* Interrupt Priority */
typedef enum {
    _CSL_INTC1_PRIORITY_DEFAULT     =                  0
} _CSL_Intc1Priority;

/* Interrupt Routing */
typedef enum {
    _CSL_INTC1_ROUTE_IRQ            =                  0,
    _CSL_INTC1_ROUTE_FIQ            =                  1
} _CSL_Intc1Route;

/* Interrupt Sensitivity */
typedef enum {
    _CSL_INTC1_SENSE_FALLINGEDGE    =                  0,
    _CSL_INTC1_SENSE_LOWLEVEL       =                  1
} _CSL_Intc1Sense;

/* Interrupt Enable/Disable State */
typedef enum {
    _CSL_INTC1_STATE_ENABLE         =                  0,
    _CSL_INTC1_STATE_DISABLE        =                  1
} _CSL_Intc1EventEnableState;

/* Global Interrupt Enable/Disable State */
typedef enum {
    _CSL_INTC1_GBLSTATE_ENABLE      =                  0,
    _CSL_INTC1_GBLSTATE_DISABLE     =                  1
} _CSL_Intc1GlobalEnableState;

/* The Interrupt Event-ID */
typedef int _CSL_Intc1EventId;

/* Interrupt setup-structure */
typedef struct _CSL_Intc1Setup {
    _CSL_Intc1Priority       priority;
    _CSL_Intc1Route          route;
    _CSL_Intc1Sense          sense;
} _CSL_Intc1Setup;

/**************************************************************************\
* INTC1 global function declarations
\**************************************************************************/
/**************************************************************************\
* INTC1 inline function declarations
\**************************************************************************/

inline void  _CSL_intc1Init(
    void
);


inline _CSL_Intc1Priority  _CSL_intc1GetPriority(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1SetPriority(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Priority                       priority
);


inline _CSL_Intc1Route  _CSL_intc1GetRoute(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1SetRoute(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Route                          route_IRQ_or_FIQ
);


inline _CSL_Intc1Sense  _CSL_intc1GetSense(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1SetSense(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Sense                          sense
);


inline void  _CSL_intc1Setup(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Setup                          *setup
);


inline void  _CSL_intc1GetSetup(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Setup                          *setup
);


inline _CSL_Intc1EventId  _CSL_intc1GetActiveFIQ(
    void
);


inline _CSL_Intc1EventId  _CSL_intc1GetActiveIRQ(
    void
);


inline void  _CSL_intc1AckFIQ(
    void
);


inline void  _CSL_intc1AckIRQ(
    void
);


inline _CSL_Intc1EventEnableState  _CSL_intc1Enable(
    _CSL_Intc1EventId                        evtId
);


inline _CSL_Intc1EventEnableState  _CSL_intc1Disable(
    _CSL_Intc1EventId                        evtId
);


inline _CSL_Intc1EventEnableState  _CSL_intc1Restore(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1EventEnableState               enState
);


inline Bool  _CSL_intc1Test(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1Set(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1Clear(
    _CSL_Intc1EventId                        evtId
);


inline void  _CSL_intc1Reset(
    _CSL_Intc1EventId                        evtId
);


inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalEnable(
    void
);


inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalDisable(
    void
);


inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalRestore(
    _CSL_Intc1GlobalEnableState              globalEn
);

/**************************************************************************\
* INTC1 inline function definitions
\**************************************************************************/

inline void  _CSL_intc1Init(
    void
)
{
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1Priority  _CSL_intc1GetPriority(
    _CSL_Intc1EventId                        evtId
)
{
    return (_CSL_Intc1Priority)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_PRIORITY);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1SetPriority(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Priority                       priority
)
{
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_PRIORITY, priority);
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1Route  _CSL_intc1GetRoute(
    _CSL_Intc1EventId                        evtId
)
{
    return (_CSL_Intc1Route)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_FIQ);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1SetRoute(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Route                          route_IRQ_or_FIQ
)
{
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_FIQ, route_IRQ_or_FIQ);
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1Sense  _CSL_intc1GetSense(
    _CSL_Intc1EventId                        evtId
)
{
    return (_CSL_Intc1Sense)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_SENSE_EDGE);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1SetSense(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Sense                          sense
)
{
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId], INTC1_ILR_SENSE_EDGE, sense);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1Setup(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Setup                          *setup
)
{
    ((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId] =
       CSL_FMK(INTC1_ILR_PRIORITY,   setup->priority)
     | CSL_FMK(INTC1_ILR_SENSE_EDGE, setup->sense)
     | CSL_FMK(INTC1_ILR_FIQ,        setup->route);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1GetSetup(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1Setup                          *setup
)
{
    register int ilr;

    ilr = ((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ILR[evtId];

    setup->priority = (_CSL_Intc1Priority)CSL_FEXT(ilr, INTC1_ILR_PRIORITY);
    setup->sense    = (_CSL_Intc1Sense)CSL_FEXT(ilr, INTC1_ILR_SENSE_EDGE);
    setup->route    = (_CSL_Intc1Route)CSL_FEXT(ilr, INTC1_ILR_FIQ);
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1EventId  _CSL_intc1GetActiveFIQ(
    void
)
{
    return (_CSL_Intc1EventId)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->SFR, INTC1_SFR_IRQ);
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1EventId  _CSL_intc1GetActiveIRQ(
    void
)
{
    return (_CSL_Intc1EventId)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->SIR, INTC1_SIR_IRQ);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1AckFIQ(
    void
)
{
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ICR, INTC1_ICR_NEW_FIQ_AGR, 1);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1AckIRQ(
    void
)
{
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ICR, INTC1_ICR_NEW_IRQ_AGR, 1);
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1EventEnableState  _CSL_intc1Enable(
    _CSL_Intc1EventId                        evtId
)
{
    _CSL_Intc1EventEnableState en;
    en  = (_CSL_Intc1EventEnableState)CSL_FEXTR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId);
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId, CSL_INTC1_MIR_MASK_ENABLE);
    return en;
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1EventEnableState  _CSL_intc1Disable(
    _CSL_Intc1EventId                        evtId
)
{
    _CSL_Intc1EventEnableState en;
    en  = (_CSL_Intc1EventEnableState)CSL_FEXTR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId);
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId, CSL_INTC1_MIR_MASK_DISABLE);
    return en;
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1EventEnableState  _CSL_intc1Restore(
    _CSL_Intc1EventId                        evtId,
    _CSL_Intc1EventEnableState               enState
)
{
    _CSL_Intc1EventEnableState en;
    en  = (_CSL_Intc1EventEnableState)CSL_FEXTR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId);
	CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId, enState);
    return en;
}

/*------------------------------------------------------------------------*/

inline Bool  _CSL_intc1Test(
    _CSL_Intc1EventId                        evtId
)
{
    return (Bool)CSL_FEXTR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ITR, evtId, evtId);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1Set(
    _CSL_Intc1EventId                        evtId
)
{
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ISR, evtId, evtId, CSL_INTC1_ISR_RESET);
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ISR, evtId, evtId, CSL_INTC1_ISR_SET);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1Clear(
    _CSL_Intc1EventId                        evtId
)
{
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ITR, evtId, evtId, CSL_INTC1_ITR_RESET);
}

/*------------------------------------------------------------------------*/

inline void  _CSL_intc1Reset(
    _CSL_Intc1EventId                        evtId
)
{
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->MIR, evtId, evtId, CSL_INTC1_MIR_MASK_DISABLE); /* disable */
    CSL_FINSR(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ITR, evtId, evtId, CSL_INTC1_ITR_RESET); /* clear */
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalEnable(
    void
)
{
    _CSL_Intc1GlobalEnableState en;
    en  = (_CSL_Intc1GlobalEnableState)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK);
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK, 0);
    return en;
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalDisable(
    void
)
{
    _CSL_Intc1GlobalEnableState en;
    en  = (_CSL_Intc1GlobalEnableState)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK);
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK, 0);
    return en;
}

/*------------------------------------------------------------------------*/

inline _CSL_Intc1GlobalEnableState  _CSL_intc1GlobalRestore(
    _CSL_Intc1GlobalEnableState              globalEn
)
{
    _CSL_Intc1GlobalEnableState en;
    en  = (_CSL_Intc1GlobalEnableState)CSL_FEXT(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK);
    CSL_FINS(((CSL_Intc1RegsOvly)CSL_INTC1_REGS)->ECR, INTC1_ECR_GLOBAL_MASK, globalEn);
    return en;
}

/*------------------------------------------------------------------------*/


#endif

⌨️ 快捷键说明

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