_csl_intc2.h
来自「dsp在音频处理中的运用」· C头文件 代码 · 共 470 行
H
470 行
/*****************************************************\ * 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_INTC2_H_#define _CSL_INTC2_H_#include <csl.h>#include <soc.h>#include <cslr_intc2.h>/**************************************************************************\* INTC2 global macro declarations\**************************************************************************/#define _CSL_INTC2_EVT_CNT (128) /* Number of Events *//**************************************************************************\* INTC2 global typedef declarations\**************************************************************************//* Interrupt Priority */typedef enum { __CSL_INTC2_PRIORITY_DEFAULT = 0} _CSL_Intc2Priority;/* Interrupt Routing */typedef enum { __CSL_INTC2_ROUTE_IRQ = 0, __CSL_INTC2_ROUTE_FIQ = 1} _CSL_Intc2Route;/* Interrupt Sensitivity */typedef enum { _CSL_INTC2_SENSE_FALLINGEDGE = 0, _CSL_INTC2_SENSE_LOWLEVEL = 1} _CSL_Intc2Sense;/* Interrupt Enable/Disable State */typedef enum { _CSL_INTC2_STATE_ENABLE = 0, _CSL_INTC2_STATE_DISABLE = 1} _CSL_Intc2EventEnableState;/* Global Interrupt Enable/Disable State */typedef enum { _CSL_INTC2_GBLSTATE_ENABLE = 0, _CSL_INTC2_GBLSTATE_DISABLE = 1} _CSL_Intc2GlobalEnableState;/* The Interrupt Event-ID */typedef int _CSL_Intc2EventId;/* Interrupt setup-structure */typedef struct _CSL_Intc2Setup { _CSL_Intc2Priority priority; _CSL_Intc2Route route; _CSL_Intc2Sense sense;} _CSL_Intc2Setup;/**************************************************************************\* INTC2 global function declarations\**************************************************************************//**************************************************************************\* INTC2 inline function declarations\**************************************************************************/inline void _CSL_intc2Init( void);inline _CSL_Intc2Priority _CSL_intc2GetPriority( _CSL_Intc2EventId evtId);inline void _CSL_intc2SetPriority( _CSL_Intc2EventId evtId, _CSL_Intc2Priority priority);inline _CSL_Intc2Route _CSL_intc2GetRoute( _CSL_Intc2EventId evtId);inline void _CSL_intc2SetRoute( _CSL_Intc2EventId evtId, _CSL_Intc2Route route_IRQ_or_FIQ);inline _CSL_Intc2Sense _CSL_intc2GetSense( _CSL_Intc2EventId evtId);inline void _CSL_intc2SetSense( _CSL_Intc2EventId evtId, _CSL_Intc2Sense sense);inline void _CSL_intc2Setup( _CSL_Intc2EventId evtId, _CSL_Intc2Setup *setup);inline void _CSL_intc2GetSetup( _CSL_Intc2EventId evtId, _CSL_Intc2Setup *setup);inline _CSL_Intc2EventId _CSL_intc2GetActiveFIQ( void);inline _CSL_Intc2EventId _CSL_intc2GetActiveIRQ( void);inline void _CSL_intc2AckFIQ( void);inline void _CSL_intc2AckIRQ( void);inline _CSL_Intc2EventEnableState _CSL_intc2Enable( _CSL_Intc2EventId evtId);inline _CSL_Intc2EventEnableState _CSL_intc2Disable( _CSL_Intc2EventId evtId);inline _CSL_Intc2EventEnableState _CSL_intc2Restore( _CSL_Intc2EventId evtId, _CSL_Intc2EventEnableState enState);inline Bool _CSL_intc2Test( _CSL_Intc2EventId evtId);inline void _CSL_intc2Set( _CSL_Intc2EventId evtId);inline void _CSL_intc2Clear( _CSL_Intc2EventId evtId);inline void _CSL_intc2Reset( _CSL_Intc2EventId evtId);inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalEnable( void);inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalDisable( void);inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalRestore( _CSL_Intc2GlobalEnableState globalEn);/**************************************************************************\* INTC2 inline function definitions\**************************************************************************/inline void _CSL_intc2Init( void){}/*------------------------------------------------------------------------*/inline _CSL_Intc2Priority _CSL_intc2GetPriority( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; return (_CSL_Intc2Priority)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_PRIORITY);}/*------------------------------------------------------------------------*/inline void _CSL_intc2SetPriority( _CSL_Intc2EventId evtId, _CSL_Intc2Priority priority){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_PRIORITY, priority);}/*------------------------------------------------------------------------*/inline _CSL_Intc2Route _CSL_intc2GetRoute( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; return (_CSL_Intc2Route)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_FIQ);}/*------------------------------------------------------------------------*/inline void _CSL_intc2SetRoute( _CSL_Intc2EventId evtId, _CSL_Intc2Route route_IRQ_or_FIQ){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_FIQ, route_IRQ_or_FIQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2Sense _CSL_intc2GetSense( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; return (_CSL_Intc2Sense)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_SENSE_EDGE);}/*------------------------------------------------------------------------*/inline void _CSL_intc2SetSense( _CSL_Intc2EventId evtId, _CSL_Intc2Sense sense){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_SENSE_EDGE, sense);}/*------------------------------------------------------------------------*/inline void _CSL_intc2Setup( _CSL_Intc2EventId evtId, _CSL_Intc2Setup *setup){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; ((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt] = CSL_FMK(INTC2_ILR_PRIORITY, setup->priority) | CSL_FMK(INTC2_ILR_SENSE_EDGE, setup->sense) | CSL_FMK(INTC2_ILR_FIQ, setup->route);}/*------------------------------------------------------------------------*/inline void _CSL_intc2GetSetup( _CSL_Intc2EventId evtId, _CSL_Intc2Setup *setup){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; register int ilr; ilr = ((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt]; setup->priority = (_CSL_Intc2Priority)CSL_FEXT(ilr, INTC2_ILR_PRIORITY); setup->sense = (_CSL_Intc2Sense)CSL_FEXT(ilr, INTC2_ILR_SENSE_EDGE); setup->route = (_CSL_Intc2Route)CSL_FEXT(ilr, INTC2_ILR_FIQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventId _CSL_intc2GetActiveFIQ( void){ return (_CSL_Intc2EventId)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].SFR, INTC2_SFR_IRQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventId _CSL_intc2GetActiveIRQ( void){ return (_CSL_Intc2EventId)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].SIR, INTC2_SIR_IRQ);}/*------------------------------------------------------------------------*/inline void _CSL_intc2AckFIQ( void){ CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_NEW_FIQ_AGR, 1);}/*------------------------------------------------------------------------*/inline void _CSL_intc2AckIRQ( void){ CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_NEW_IRQ_AGR, 1);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState _CSL_intc2Enable( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; _CSL_Intc2EventEnableState en; en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt); CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_ENABLE); return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState _CSL_intc2Disable( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; _CSL_Intc2EventEnableState en; en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt); CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_DISABLE); return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState _CSL_intc2Restore( _CSL_Intc2EventId evtId, _CSL_Intc2EventEnableState enState){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; _CSL_Intc2EventEnableState en; en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt); CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evtId, evtId, enState); return en;}/*------------------------------------------------------------------------*/inline Bool _CSL_intc2Test( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; return (Bool)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt);}/*------------------------------------------------------------------------*/inline void _CSL_intc2Set( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ISR, evt, evt, CSL_INTC1_ISR_SET);}/*------------------------------------------------------------------------*/inline void _CSL_intc2Clear( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt, CSL_INTC1_ITR_RESET);}/*------------------------------------------------------------------------*/inline void _CSL_intc2Reset( _CSL_Intc2EventId evtId){ register int sect = (int)evtId >> 5; register int evt = (int)evtId & 0x1F; CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_DISABLE); /* disable */ CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt, CSL_INTC1_ITR_RESET); /* clear */}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalEnable( void){ _CSL_Intc2GlobalEnableState en; en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK); CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, 0); return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalDisable( void){ _CSL_Intc2GlobalEnableState en; en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK); CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, 0); return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState _CSL_intc2GlobalRestore( _CSL_Intc2GlobalEnableState globalEn){ _CSL_Intc2GlobalEnableState en; en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK); CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, globalEn); return en;}/*------------------------------------------------------------------------*/#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?