网站建设企业所得税,庄河网站建设,wordpress 文章字数,北京seo排名优化网站一、中断处理机制概述
中断是CPU在执行程序过程中#xff0c;遇到急需处理的事件时#xff0c;暂时停止当前程序的执行#xff0c;转而执行处理该事件的中断服务程序#xff0c;并在处理完毕后返回原程序继续执行的过程。S3C2440提供了丰富的中断源#xff0c;包括内部中…一、中断处理机制概述
中断是CPU在执行程序过程中遇到急需处理的事件时暂时停止当前程序的执行转而执行处理该事件的中断服务程序并在处理完毕后返回原程序继续执行的过程。S3C2440提供了丰富的中断源包括内部中断和外部中断以及支持子中断的功能。
二、中断处理得流程 上图为中断处理的框图首先中断源分为有子中断和无子中断两类 1)当有子中断时SUBSRCPND和SRCPND会自动置位紧接着需要将中断屏蔽寄存器和次级中断屏蔽寄存器SUBMASK和INTMSK以及INTSUBMSK设置为0使能开启中断服务此时表明中断设置成功 接下来使用INTOFFSET中断偏移寄存器可以准确定位到中断处理函数的地址处进而进行中断处理需要注意的是在中断处理函数中当处理完业务之后必须将之前因中断产生而置位的中断标志位清除一般写入1即可顺序必须遵循如上框图从左至右依次清除 (2)无子中断的处理过程和有子中断的基本一致省略掉子中断的那一部分即可 二、中断实现
外部中断通过引脚接收 S3C2440有24个外部中断引脚 EXTINT0 —》设置信号 EINTMASK–》信号使能 EINTPEND–》 信号标志 void deal_eint8_23(void)
{if(EINTPEND (1 EINT8)){EINTPEND | (0x01 EINT8);}
}void deal_irq_c(void)
{unsigned int irq_num INTOFFSET;switch(irq_num){case EINT8_23:deal_eint8_23();break;default:break;}SRCPND | (1 irq_num);INTPND INTPND;
}void eint8_init(void)
{//配置GPG0功能位eint8GPGCON ~(0x3 0);GPGCON | (0x2 0);//设置eint8的触发方式EXTINT1 ~(0x7 0);EXTINT1 | (0x2 0);//使能eint8EINTMASK ~(0x1 8);//使能eint8_23INTMSK ~(0x1 5);
}