📄 2440int.c
字号:
//====================================================================
// IRQ 中断 操作
//====================================================================
#include "2440Int.h"
#include "option.h"
#include "2440addr.h"
static unsigned int *__IRQ_Vector = (unsigned int *)(_INT_VIC_STARTADDRESS)+8;
//中断 初始化
void IRQ_Init()
{
unsigned int i;
rINTMSK = 0xFFFFFFFF;
rINTSUBMSK = 0xFFFFFFFF;
rSRCPND = 0xFFFFFFFF;
rINTPND = 0xFFFFFFFF;
rSUBSRCPND = 0xFFFFFFFF;
rINTMOD = 0;
for( i = 0 ; i < 32 ; i++ )
{
__IRQ_Vector[i] = (unsigned int)IRQ_FIQ_PABT_Def;
}
}
//开关 子中断
void IRQ_SUB_Enable(unsigned int ID_SUB)
{
if( ID_SUB > 10 )
{
return;
}
rINTSUBMSK = rINTSUBMSK & (~(1 << ID_SUB));
}
void IRQ_SUB_Disable(unsigned int ID_SUB)
{
if( ID_SUB > 10 )
{
return;
}
rINTSUBMSK = rINTSUBMSK | (1 << ID_SUB);
}
//开关 中断
void IRQ_Enable(unsigned int ID)
{
if( ID > 31 )
{
return ;
}
rINTMSK = rINTMSK & ( ~(1 << ID) );
}
void IRQ_Disable(unsigned int ID)
{
if( ID > 31 )
{
return ;
}
rINTMSK = rINTMSK | (1 << ID);
IRQ_Vector( ID, (unsigned int)IRQ_FIQ_PABT_Def);
}
//IRQ 中断向量注册
void IRQ_Vector(unsigned int ID,unsigned int pVector)
{
if( ID > 31 )
{
return ;
}
__IRQ_Vector[ID] = pVector;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -