📄 int.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 + -