LPC2131 中断处理

关于中断处理LPC2131 使用的ARM PrimeCell向量中断控制器将所有的中断分为三种:FIRQ IRQ向量中断 IRQ非向量中断,最多可支持32个中断输入。而我们使用的EasyARM2131开发板提供了21个中断源。FIRQ有最高的优先级IRQ向量中断次之IRQ非向量中断优先级最低其中IRQ向量中断:最多可定义16个,支持优先级策略,优先级设置通过将中断源编号置入VICVectCntX寄
摘要由CSDN通过智能技术生成
关于中断处理

LPC2131 使用的ARM PrimeCell向量中断控制器将所有的中断分为三种:
FIRQ IRQ向量中断 IRQ非向量中断,最多可支持32个中断输入。而我们使用的EasyARM2131开发板提供了21个中断源。

FIRQ有最高的优先级

IRQ向量中断次之

IRQ非向量中断优先级最低

其中IRQ向量中断:最多可定义16个,支持优先级策略,优先级设置通过将中断源编号置入VICVectCntX寄存器来完成,X数字越低,优先级越高,对应的中断服务程序地址置于相应的VICVectAddrX中。在IRQ中断产生时,根据优先级,应得到处理的高优先级中断的服务程序地址将被拷贝到VICVectAddr中。

IRQ非向量中断:不支持优先级,其服务程序地址被置于默认向量地址寄存器 VICDefVectAddr 中,在有中断请求时会拷贝到VICVectAddr中,具体是哪个中断源发出的请求,需要在服务程序中,通过查询VICIRQStatus判断哪个中断源编号被置位来确定,这样服务程序会稍显臃肿。

以上说明非FIRQ中断,最终应进入的服务程序的地址会被写入VICVectAddr中。一旦产生IRQ中断,微控制器会切换到IRQ模式,并跳转到向量表0x00000018处执行,如代码列表(1)处所示,因为ARM7TDMI是3级流水线,因而PC的值应为0x00000020, 减去0xff0为0xfffff030恰好是VICVectAddr的地址。这样用这条指令便可进入中断处理程序

对于FIQ,因为一般其对响应速度要求较高,所以一般只定义一个。与IRQ非向量中断类似,如果多于一个,则应在服务程序中读取VICFIQStatus来确定中断源,FIQ的中断服务程序定义在FIQ_Handler中。一旦产生FIQ中断,处理器会切换到FIQ迷失并跳转带0x0000001C地址执行程序,最终将跳到FIQ_Handler标号处,处理FIQ中断

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值