飞凌OK6410学习之中断的学习 继续。。

假设我们中断多了,是不是要在程序中一个个的把中断写上去呢?答案是否定的,这里我们就需要用到中断向量控制器;

S3c6410中含有两个中断控制寄存器:

中断控制器的处理机制:

1、发生中断后,矢量地址VICxVECTADDR0~VICxVECTADDR31相应一个寄存器的值就会赋给VICxADDRESS

2、中断服务寄存器就可以根据VICxADDRESS中的值来分辨是哪一个中断,发生中断,肯定该寄存器不为0

下面给出一个例子:

首先,对中断进行初始化


初始化函数为

接下来是初始化代码:

注意:这里有一个很重要的问题涉及到C语言中断的函数指针了

Int_Init函数的参数是一个函数指针unsigned是对这个函数的地址强制进行类型转换

请继续看下面的代码

现在大家应该了解了吧:

下面大概讲讲这个程序处理中断的顺序:

1、  首先对中断进行初始化,同时程序会把interrupt0的地址赋给rVIC0VECTADDR0

2、  当出现外部中断的时候,此时硬件会自动的把rVIC0VECTADDR0的值赋给rVIC0ADDRESS,而rVIC0ADDRESS就能够辨别出是哪中断(这里指的是这组中断


3、  此时程序会进入中断0的处理程序中,但那时具体还不清楚到底是哪中断,通过以下代码具体实现


我们外部中断的程序就学习到这里。

                   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值