at91_aic.c

来自「基于ARM7微控制器AT91X40开发板的定时器程序」· C语言 代码 · 共 70 行

C
70
字号
/* * at91_aic.c *  * author: Kexin (kexin28@126.com) Tel:+8613714451195 * date:   2007-11-22	 */#include "at91_aic.h"extern unsigned long svr[32];static unsigned char at91_irq_prtable[32]={7,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0};void at91_mask_irq(unsigned int irq){  unsigned long mask=1<<irq;  *(volatile unsigned int  *)AIC_IDCR=mask;  }void at91_unmask_irq(unsigned int irq){   unsigned long mask=1<<irq;   *(volatile unsigned int  *)AIC_IECR=mask;}void at91_mask_ack_irq(unsigned int irq){   at91_mask_irq(irq);   *(volatile unsigned int  *)AIC_EOICR=0x00;}int at91_request_irq(unsigned int irq_num,void *irq_isr){   if(irq_num>0&&irq_num<32)   {     svr[irq_num] = (unsigned long)irq_isr;     return 1;   }   else   return -1;}int at91_release_irq(unsigned int irq_num){	    if(irq_num>0&&irq_num<32)   {   	 if( svr[irq_num] != 0)   	 	{        svr[irq_num] = (unsigned long)0;        return 1;      }      else      	return -1;   }   else     return -1;}void at91_init_aic(void){   int irqnum;   *(volatile unsigned int  *)AIC_IDCR=0xffffffff;   *(volatile unsigned int  *)AIC_ICCR=0xffffffff;   for(irqnum=0;irqnum<32;irqnum++) *(volatile unsigned int  *)AIC_EOICR=irqnum;   for(irqnum=0;irqnum<32;irqnum++) *(volatile unsigned int  *)(AIC_SMR(irqnum))=at91_irq_prtable[irqnum] | EdgeTriggered;}

⌨️ 快捷键说明

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