inth.h
来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· C头文件 代码 · 共 517 行 · 第 1/2 页
H
517 行
/*
----------------------------------------------------
INTH_InterruptKind_t -
Identify the kind of interrupt: either FIQ/IRQ -
----------------------------------------------------
*/
typedef enum {
INTH_IRQ = 0,
INTH_FIQ = 1
} INTH_InterruptKind_t;
/*
-----------------------------------------------------
INTH_Priority_t: Priority level of the interrupt -
0=highest priority -
-----------------------------------------------------
*/
typedef UWORD8 INTH_Priority_t;
/*
-------------------------------------------------------------------
INTH_SensitiveEdge_t: Sensitivity of the incoming interrupt -
-------------------------------------------------------------------
*/
typedef enum {
INTH_FALLING_EDGE_SENSITIVE = 0,
INTH_LOW_LEVEL_SENSITIVE = 1
} INTH_SensitiveEdge_t;
/*
-----------------------------------------------------
INTH_LevelRegister_t: Define an Interruption -
-----------------------------------------------------
*/
typedef struct {
INTH_InterruptNumber_t OrderedITNumber;
INTH_InterruptKind_t InterruptKind;
INTH_Priority_t Priority;
INTH_SensitiveEdge_t SensitiveEdge;
} INTH_LevelRegister_t;
typedef struct
{
/* Total number of IT Level Register */
UWORD8 Count;
/* IT Level Registers */
INTH_LevelRegister_t Item[INTH_NUMBER_OF_INTERRUPTS];
} INTH_LevelRegisterStruct_t;
/*
-------------------------------------------------------------------
NAME : INTH_InitDefaultIT -
DESCRIPTION : Initialize all the satustar incoming interrupts -
defined in the top level satustar specification -
PARAMETERS : None -
RETURN VALUE: None -
LIMITATIONS : Must be invoked at once before using the Interrupt -
handler -
-------------------------------------------------------------------
*/
void INTH_InitDefaultIT(void);
/*
---------------------------------------------------------------------------
NAME : INTH_InitLevel -
DESCRIPTION : Initialize the given interrupt either FIQ or IRQ -
into the Interrupt Level Registers at the position defined -
by OrderedITNumber setting its SensitiveEdge and priority -
PARAMETERS : -
OrderedITNumber = predefined order number is the IT position -
into the Interrupt Level Register range 0 .. 31 -
InterruptKind = IRQ of FIQ interrupt -
SensEdge = Define the edge triggered interrupt -
Priority = Priority level of the interrupt -
0=highest priority -
RETURN VALUE: None -
LIMITATIONS : None -
---------------------------------------------------------------------------
*/
void INTH_InitLevel (UWORD8 OrderedITNumber,
INTH_InterruptKind_t InterruptKind ,
INTH_Priority_t Priority,
INTH_SensitiveEdge_t SensitiveEdge);
/*
----------------------------------------------------------------------------
NAME : INTH_Init -
DESCRIPTION : Initialize the whole given interrupt Level Registers -
PARAMETERS : ITLevelRegister: Define the whole Interrupt Level Registers -
RETURN VALUE: None -
LIMITATIONS : None -
----------------------------------------------------------------------------
*/
void INTH_Init(INTH_LevelRegisterStruct_t ITLevelReg);
/*
---------------------------------------------------------------------------
NAME : INTH_ResetIT -
DESCRIPTION : Reset all the pending IT -
PARAMETERS : None -
RETURN VALUE: None -
LIMITATIONS : None -
---------------------------------------------------------------------------
*/
UWORD32 INTH_ResetIT(void);
/*
--------------------------------------------------------------------------
MACRO : INT_MASK -
DESCRIPTION : Compute the mask value corresponding -
to the input argument interruption number -
PARAMETERS : -
Interrupt = Interrupt number (range 0..31) corresponding to the IT -
See Interrupt Configuration above -
RETURN VALUE: Mask Value of the interrupt argument -
LIMITATIONS : None -
--------------------------------------------------------------------------
*/
#define INTH_MASK(Interrupt) (1 << Interrupt )
/*
--------------------------------------------------------------------------
MACRO : PENDING_INT -
DESCRIPTION : Determines whether this interrupt is pending. -
PARAMETERS : -
Interrupt = Interrupt number (range 0..31) corresponding to the IT -
See Interrupt Configuration above. -
RETURN VALUE: Interrupt number if the interrupt is pending; 0 otherwise -
LIMITATIONS : None -
--------------------------------------------------------------------------
*/
#define INTH_PENDING_INT(interrupt) \
( *(UWORD32*)INTH_IT_REG_USER_ADDR & INT_MASK(interrupt) )
/*
-----------------------------------------------------------------------
MACRO : INTH_EnableOneIt -
DESCRIPTION : Unmask the given Interrupt to enable its catching -
PARAMETERS : -
Interrupt = Interrupt number (range 0..31) corresponding to the IT -
See Interrupt Configuration above. -
RETURN VALUE: None -
LIMITATIONS : None -
-----------------------------------------------------------------------
*/
void INTH_EnableOneIt(UWORD32 Interrupt);
/*
-----------------------------------------------------------------------
MACRO : INTH_DisableOneIt -
DESCRIPTION : Mask the given Interrupt to prevent its catching -
PARAMETERS : -
Interrupt = Interrupt number (range 0..31) corresponding to the IT -
See Interrupt Configuration above. -
RETURN VALUE: None -
LIMITATIONS : None -
-----------------------------------------------------------------------
*/
void INTH_DisableOneIt(UWORD32 Interrupt);
/*
-----------------------------------------------------------------------
MACRO : INTH_EnableAllIt -
DESCRIPTION : Unmask i.e enable all the interrupts -
PARAMETERS : None -
RETURN VALUE: None -
LIMITATIONS : None -
-----------------------------------------------------------------------
*/
void INTH_EnableAllIt(void);
/*
-----------------------------------------------------------------------
MACRO : INTH_DisableAllIt -
DESCRIPTION : Mask i.e disable all the interrupts -
PARAMETERS : None -
RETURN VALUE: None -
LIMITATIONS : None -
-----------------------------------------------------------------------
*/
void INTH_DisableAllIt(void);
/*
-------------------------------------------------------------------------
MACRO : INTH_Ack -
DESCRIPTION : Acknowledge the active interrupt and -
return the origin of the interrupt (binary format) -
by reading the Source IRQ/FIQ register. -
In case of sensitive edge Interrupt, the IT register bit -
is deactivated when reading the Source IRQ/FIQ register -
otherwise, it's reset when the corresponding interrupt -
becomes inactive. -
PARAMETERS : Fiq_nIrq: Identify the kind of interrupt: either FIQ/IRQ -
RETURN VALUE: Number of the active and acknowledged Interrupt -
LIMITATIONS : Must be called on Incoming IT -
-------------------------------------------------------------------------
*/
UWORD16 INTH_Ack (INTH_InterruptKind_t Fiq_nIrq);
/*
-------------------------------------------------------------------------
MACRO : INTH_ValidNext -
DESCRIPTION : After processing the Interrupt FIQ/IRQ sequence, -
Set the dedicated bit NEW_IQ_AGR/NEW_FIQ/AGR of Control Register -
in order to reset IRQ Output and Source IRQ/FIQ register and thus, -
to allow a new IRQ/FIQ catching. -
PARAMETERS : Fiq_nIrq: Identify the kind of interrupt: either FIQ/IRQ -
RETURN VALUE: None -
LIMITATIONS : Must be called after the end of IT treatment to enable -
a new interrupt catching -
-------------------------------------------------------------------------
*/
void INTH_ValidNext (INTH_InterruptKind_t Fiq_nIrq);
/*
-------------------------------------------------------------------------
MACRO : INTH_GetPending -
DESCRIPTION : Return the pending interrupts
PARAMETERS : None
RETURN VALUE: Number of the active and acknowledged Interrupt -
LIMITATIONS : Must be called on Incoming IT -
-------------------------------------------------------------------------
*/
UWORD32 INTH_GetPending (void);
//----------------------------------------------------------
// NAME : INTH_GetAndTestResetInth
// DESCRIPTION : Test all the register at reset and store the result
//
// PARAMETERS : None
// RETURN VALUE : None
//
// LIMITATIONS : Result must be initialized
// ----------------------------------------------------------
BOOL INTH_GetAndTestResetInth(void);
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?