📄 irq.c
字号:
#include <common/types.h>
#include <mx/mx21/mx21_register.h>
#include <core/arm926ej-s/arm.h>
#define FIQ_HW_ACC_ENABLE (1<<17)
#define NIQ_HW_ACC_ENABLE (1<<18)
void NIQ_Enable(void)
{
ARM_NIQ_Enable();
}
void NIQ_Disable(void)
{
ARM_NIQ_Disable();
}
void FIQ_Enable(void)
{
ARM_FIQ_Enable();
}
void FIQ_Disable(void)
{
ARM_FIQ_Disable();
}
void NIQ_SetType(u32 IRQnum)
{
if (IRQnum <32)
*(volatile u32 *)AITC_INTTYPEL &= ~(1<<IRQnum);
else
*(volatile u32 *)AITC_INTTYPEH &= ~(1<<(IRQnum-32));
}
void FIQ_SetType(u32 IRQnum)
{
if (IRQnum <32)
*(volatile u32 *)AITC_INTTYPEL |= (1<<IRQnum);
else
*(volatile u32 *)AITC_INTTYPEH |= (1<<(IRQnum-32));
}
void IRQ_SourceEnable(u32 IRQnum)
{
IRQnum &= 0x0000003F;
*(volatile u32 *)AITC_INTENNUM = IRQnum;
}
void IRQ_SourceDisable(u32 IRQnum)
{
IRQnum &= 0x0000003F;
*(volatile u32 *)AITC_INTDISNUM = IRQnum;
}
void IRQ_Init(void)
{
// Mask all Interrupt Source;
*(volatile u32 *)AITC_INTENABLEH = 0;
*(volatile u32 *)AITC_INTENABLEL = 0;
*(volatile u32 *)AITC_INTCNTL = 0;
// Enable Hardware Acceleration
// Note: The interrupt hardware acceleration cannot work with I-Cache Enable.
*(volatile u32 *)AITC_INTCNTL = FIQ_HW_ACC_ENABLE | NIQ_HW_ACC_ENABLE;
NIQ_Enable();
FIQ_Enable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -