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

📄 irq.c

📁 一个很好的c程序 再hitool for arm 下开发
💻 C
字号:
typedef  void(*voidfun)();

void  ClrIntStatus(void)
{
	INTMASK_REG=0X1FFFFF;		//DISABLE
	INTPND_REG=0X1FFFFF;		//CLEAR
}

void  enable_IRQ(void)
{
	asm volatile ("MRS r0,CPSR\n");
	asm volatile ("BIC r0, r0,#0x80\n");
	asm volatile ("MSR CPSR_c,r0\n");
}

void  disable_IRQ(void)
{
	asm volatile ("MRS r0,CPSR\n");
	asm volatile ("ORR r0, r0,#0x80\n");
	asm volatile ("MSR CPSR_c,r0\n");
}

//初始化中断向量表
void creatIntHandlerTable(void)
{
	int i;
	for(i=0;i<IRQ_INT_NO;i++)
	{
		IntHandlerTable(i)=NULL;}
		
}

//设定中断向量表
void setIRQHandler(int i,voidfun isr)
{
	if ((i>=0) && (i < IRQ_INT_NO))
	{
		IntHandlerTable(i)=isr;}
}

//中断服务程序执行进入点
void ISR_IRQ(void)
{
	int currentIRQnimber;
	currentIRQnimber =INTOFFSET_IRQ_REG >>2;
	if((currentIRQnimber>=0) && (currentIRQnimber< IRQ_INT_NO))
	{
		if(IntHandlerTable[currentIRQnimber] !=NULL)
		{
			Clear_PendingBit(currentIRQnimber);
			IntHandlerTable[currentIRQnimber]();
		}
	}
}
			


	

⌨️ 快捷键说明

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