⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int.c

📁 lxRTOS一个用于嵌入系统的操作系统
💻 C
字号:
/*
* file:
*       int.c
* description:
*       interrupt controller code.
*/

void int_ctrl_init(void)
{
    int       i;
    AT91_REG* svr = AT91C_AIC_SVR;

    *AT91C_AIC_IDCR  = 0xffffffff;
    *AT91C_AIC_FFDR  = 0xffffffff;
    *AT91C_AIC_ICCR  = 0xffffffff;
    *AT91C_AIC_EOICR = *AT91C_AIC_EOICR;

    for(i=0; i<32; i++)
        svr[i] = 0xffffffff;
    *AT91C_AIC_SPU = 0x00;
}


void int_ctrl_set_mode(int irq, int mode)
{
    if(mode)
        *AT91C_AIC_FFER = (0x01<<irq);
    else
        *AT91C_AIC_FFDR = (0x01<<irq);
}


int int_ctrl_get_mode(int irq)
{
    return (*AT91C_AIC_FFSR & (0x1<<irq)) ? 1 : 0;
}


void int_ctrl_enable_irq(int irq, int enable)
{
    if(enable)
    {
        *AT91C_AIC_ICCR = (0x01<<irq);
        *AT91C_AIC_IECR = (0x01<<irq);
    }
    else
    {
        *AT91C_AIC_IDCR = (0x01<<irq);
        *AT91C_AIC_ICCR = (0x01<<irq);
    }
}


void int_ctrl_clear_status(int irq)
{
    unsigned int status;

    if(irq == AT91C_ID_TC0)
        status = *AT91C_TC0_SR;
}


void int_ctrl_clear_irq(int irq)
{
    *AT91C_AIC_ICCR  = (0x01<<irq);
    *AT91C_AIC_EOICR = *AT91C_AIC_EOICR;
}


/* end of file */

⌨️ 快捷键说明

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