2440int.c

来自「阳初ucosII ADS1.2程序带VGA显示」· C语言 代码 · 共 85 行

C
85
字号
//====================================================================
// 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 + =
减小字号Ctrl + -
显示快捷键?