上海做壁画的网站,wordpress访客插件,织梦网站描述,什么是网络营销企业EINT4中断的裸机处理 这是基于S3C2410的EINT4中断的裸机处理#xff0c;当中断发生时就把LED灯取反显示。下面是电路图。 上面是外部KEY连接到CPU的EINT4引脚上面#xff0c;即#xff1a;按下键就会产生一个中断。 按照先前介绍的#xff0c;中断处理流程来介绍#xff0… EINT4中断的裸机处理 这是基于S3C2410的EINT4中断的裸机处理当中断发生时就把LED灯取反显示。下面是电路图。 上面是外部KEY连接到CPU的EINT4引脚上面即按下键就会产生一个中断。 按照先前介绍的中断处理流程来介绍包括初始化中断、处理中断、处理完毕恢复中断。 一、引导代码 int main(void) { EINT_init(); // 外部中断初始化、中断控制器初始化 IRQEnable(); // 使能IRQ中断 (清零CPSR寄存器的I位) while(1); // 等待外部中断 } 二、初始化代码函数EINT_init。 EINT_init包括外部中断初始化、中断控制器初始化。设置GPF4引脚为外部中断EINT4功能下降沿触发模式并使能中断允许。 void EINT_init(void) { rGPFCON (rGPFCON 0xFFFFFCFF) | (0x028); // 设置GPF4引脚为外部中断EINT4功能 rEXTINT0 (0x216); // 外部中断EINT4设置为下降沿触发 VICVectAddr[4] (uint32) IRQ_Eint4; // 中断向量地址设置 rPRIORITY 0x00000000; // 使用默认的固定的优先级 rINTMOD 0x00000000; // 所有中断均为IRQ中断 rINTMSK ~0x0000010; // 使能EINT4中断(第一级) rEINTMASK ~0x0000010; // 使能第二级中断 } 三、使能IRQ中断函数IRQEnable。 功能是使能IRQ中断 (清零CPSR寄存器的I位)代码如下 ; 开IRQ中断 MRS R0, SPSR BIC R0, R0, #I_BIT MSR SPSR_c, R0 MOVS PC, LR 四、IRQ_Exception中断异常处理程序(实现向量中断处理)用户无需改动代码如下 void __irq IRQ_Exception(void) // 注意这个函数名之前的 __irq 编译器会有特别动作。 { void (*__Handler)(void); int irq_no; uint32 bak; // 找出当前中断号 bak rINTPND; // 读取INTPND的值 for(irq_no0; irq_no32; irq_no) { bak bak1; if(bak 0) break; // 获得最高的优先级 } // 取得中断服务程序地址并执行 __Handler (void (*)(void)) VICVectAddr[irq_no]; __Handler(); } 五、EINT4的中断处理函数IRQ_Eint4。 功能把LED1控制口输出信号取反。 void IRQ_Eint4(void) { // 把LED1控制口输出信号取反 // 省略... // 清除中断标志 rEINTPEND (14); // 清除第二级的中断标识 rSRCPND (14); // 清除第一级的中断标识 rINTPND rINTPND; // 清除mask过滤后的中断标识 } 从上面的代码中大约可以得出每个阶段的流程初始化时要一级一级的设置好mask中断服务之后要一级一级的清理中断标识。