L9-D17中断控制器

目录

17.1中断控制器

17.2Exynos4412

17.3中断控制器寄存器详解

17.4中断控制器编程

作业


17.1中断控制器

L9-D17中断控制器_第1张图片

 中断控制器作用:

  • 多个中断同时产生时可对这些中断挂起排队,然后按照优先级依次发送给CPU处理  
  • 可以为每一个中断分配一个优先级  
  • 一个中断正在处理时若又产生其它中断,可将新的中断挂起,待CPU空闲时再发送  
  • 可以为每一个中断选择一个CPU处理  可以为每一个中断选择一个中断类型(FIQ或IRQ)  
  • CPU接收到中断信号后并不能区分是哪个外设产生的,此时CPU可查询中断控制器  
  • 来获取当前的中断信号是由哪个硬件产生的,然后再进行对应的处理  
  • 可以打开或禁止每一个中断  ... ...

17.2Exynos4412

L9-D17中断控制器_第2张图片

 

17.3中断控制器寄存器详解

L9-D17中断控制器_第3张图片

 

17.4中断控制器编程

#include "exynos_4412.h"

void Delay(unsigned int Time)
{
	while(Time--);
}

//IRQ异常处理
void do_irq(void)
{
	unsigned int IrqNum = 0;
	/*从中断控制器中获取当前中断的中断号*/
	IrqNum = CPU0.ICCIAR & 0x3FF;
	
	/*根据中断号处理不同的中断*/
	switch(IrqNum)
	{
		case 0:
			//0号中断的处理程序
			break;
		case 1:
			//1号中断的处理程序
			break;
			/*
			 * ... ...
			 */
		case 57:
			printf("Key2 Pressed\n");
			/*清除GPIO控制器中GPX1_1的中断挂起标志位*/
			EXT_INT41_PEND = (1 << 1);
			/*将当前中断的中断号写回到中断控制器中,以这种方式来告知中断控制器当前的中断已经处理完成,可以发送其它中断*/
			CPU0.ICCEOIR = CPU0.ICCEOIR & (~(0x3FF)) | (57);
			break;
			/*
			 * ... ...
			 */
		case 159:
			//159号中断的处理程序
			break;
		default:
			break;
	}

}

int main()
{
	/*外设层次 - 让外部的硬件控制器产生一个中断信号发送给中断控制器*/
	/*将GPX1_1设置成中断功能*/
	GPX1.CON = GPX1.CON | (0xF << 4);
	/*设置GPX1_1的中断触发方式为下降沿触发*/
	EXT_INT41_CON = EXT_INT41_CON & (~(0x7 << 4)) | (0x2 << 4);
	/*使能GPX1_1的中断功能*/
	EXT_INT41_MASK = EXT_INT41_MASK & (~(1 << 1));

	/*中断控制器层次 - 让中断控制器接收外设产生的中断信号并对其进行管理然后再转发给CPU处理*/
	/*全局使能中断控制器使其能接收外设产生的中断信号并转发到CPU接口*/
	ICDDCR = ICDDCR | 1;
	/*在中断控制器中使能57号中断,使中断控制器接收到57号中断后能将其转发到CPU接口*/
	ICDISER.ICDISER1 = ICDISER.ICDISER1 | (1 << 25);
	/*选择由CPU0来处理57号中断*/
	ICDIPTR.ICDIPTR14 = ICDIPTR.ICDIPTR14 & (~(0xFF << 8)) | (0X01 << 8);
	/*使能中断控制器和CPU0之间的接口,使中断控制器转发的中断信号能够到达CPU0*/
	CPU0.ICCICR = CPU0.ICCICR | 1;

	GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28);

    while(1)
	{   
		/*点亮LED2*/
		GPX2.DAT = GPX2.DAT | (1 << 7); 
		/*延时*/
		Delay(1000000);
		/*熄灭LED2*/
		GPX2.DAT = GPX2.DAT & (~(1 << 7));
		/*延时*/
		Delay(1000000);
	}   

	return 0;
}

作业

1.简述中断控制器的主要作用

答:

中断控制器是计算机系统中的一个硬件设备,它的主要作用是协调计算机内部的中断请求,然后以一定的优先级为中断请求提供服务。
具体来说,中断控制器有以下主要作用:
1. 监测中断请求:中断控制器不断地监听电路中各种设备的中断请求信号,同时记录和维护有关这些请求的信息,包括请求编号、优先级、请求源等。
2. 接收和判断中断请求:当中断请求信号到达时,中断控制器负责接收并判断请求的类型和优先级,然后将请求信息保存在相应的寄存器中,以便CPU进行后续处理。
3.响应和服务中断请求:当中断请求被确认后,中断控制器负责通知CPU中断信号已经到来,并且从请求队列中选择最高优先级的中断请求安排CPU优先处理。同时,中断控制器会将CPU当前的执行状态以及程序计数器等信息保存起来,以便CPU在处理完中断后能够恢复到正确的执行状态。
4. 结束中断服务:当CPU完成对中断请求的处理后,中断控制器会通知CPU中断已经结束,并恢复CPU之前保存的现场,让CPU继续执行先前的任务。
综上所述,中断控制器是计算机系统中非常重要的硬件设备之一,它能够协调计算机内部的中断请求,使得系统能够高效地响应各种外部事件。

你可能感兴趣的:(单片机,嵌入式硬件)