ARM裸机开发222440中断原理
2016-06-06 来源:eefocus
通常有以下三种方式
1.查询方式
2.中断方式
3.DMA方式(在独立开辟的一个空间不由CPU控制,有DMA自己进行管理。实现存储器与外设的高速的数据传输方式)
主要讲中断:
中断请求---->中断仲裁---->中断响应---->中断处理---->中断返回(要保存现场)
中断处理流程:
1.中断控制器捕获当前外设发出的中断信号,通知SOC(中央处理芯片:片上系统)
2.SOC保存当前程序的运行环境,调用中断服务程序(ISR:一小段代码)进行处理中断
3.在ISR中通过读取中断控制寄存器、外设的相关寄存器来识别那一个中断触发,获取硬件中断号IRQ,跳转到相应的处理程序(详细完整的处理程序)来完成中断处理
4.清除中断:通过读写相关寄存器
5.恢复被中断的环境,继续执行(现场)
2440有60个中断源
一级中断源,二级中断源等的概念
图片中的所指示的单元为相应的寄存器
悬挂寄存器source pending(SUBSRCPND、SRCPND)清零方式为向相应的位写1.与 常规的清零方式不同。INTPND也是通过写1进行清0操作
INTOFFSET:这个寄存器用来表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位为1时,INTOFFSET寄存器的值为x(x为0~31)
在清除SRCPND、INTPND寄存器时,INTOFFSET寄存器被自动清除。
具体内容详见芯片手册S3C2440
外部中断:
外部中断也有相关的寄存器EXTINTx,EINTMASK,EINTPEND三个寄存器
EXTINTx设置中断的触发方式低电平,高电平,上升沿,下降沿,边沿触发
EINTMASK
EINTPEND中断悬挂寄存器(相应中断触发,相应的位置1)读取此寄存器可以知道是那一个寄存器被触发了