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

📄 irq.c

📁 Nand Flash (SAMSUNG_K9K1G08U0B) boot loader for i.Mx31 (freescale).
💻 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 + -