Chinaunix首页 | 论坛 | 博客
  • 博客访问: 158356
  • 博文数量: 40
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-27 18:05
文章分类
文章存档

2011年(1)

2010年(9)

2009年(16)

2008年(14)

我的朋友

分类: LINUX

2009-08-21 18:31:51


s3c2440支持最多60个中断源。
当中断来临时,写入
每种中断都有一个寄存器显示中断产生了,和一个掩码寄存器来屏蔽此位中断,
例所有的中断都要经过SRCPND,SRCPND的掩码寄存器是INTMASK,
               SUBSRCPND的掩码寄存器是INTSUBMSK。
               EINTPEND的掩码寄存器是 EINTMASK。
要让系统处理中断,首先,设置CPSR中irq,fiq相应位为0,再设置SRCPND, SUBSRCPND, EINTPEND,对应的掩码寄存器,开哪个中断,哪个中断设为1。

中断产生时,可直接读INTOFFSET位,得知INTPND中是哪个位设为了1产生了中断。如果是因为来源SUBSRCPND,那么再查询相应的位,如果是因为来源SRCPND中的EINT8_23或EINT4_7产生,则查询EINTPEND中的相应位。

当响应完成中断后,要将产生的那位设位1来取消这个中断,否则这个寄存器里值不会改变。取消时,从中断来源处开始,依次取消,最后一个INTPND也要设。



阅读(1508) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~