外部中断控制

                   内外部中断,除了仿真器中断和复位中断不可屏蔽,其余中断均可屏蔽,除了不可屏蔽中断和引导加载中断EP0I或者LP4I外,所有中断在系统复位时都是默认被屏蔽的。当1个中断正在执行服务期间,ADSP会在每个周期都对中断锁存寄存器ILAT中的相应位清0,以禁止该中断服务程序重复响应。

      涉及到中断的主要有以下这几个寄存器:ILATIMASKPMASK,此3个寄存器位定义一致,以及SQCTL下的GIE位控制全局中断,和INTCTL控制IRQ3-0的触发方式、TIME1-0的启动。

 

      寄存器高32位:


      寄存器低32位:


      ILAT: 中断锁存寄存器,是1个64位的只读寄存器,通过两个32位的寄存器ILATL和ILATH对其进行访问,每位对应一种中断类型,当中断产生时,该寄存器中相应的位置1,中断位按照中断优先级排列,位0对应最低中断类型。PS:对ILATH、ILATL寄存器的置1操作只能通过对ILATSTH、ILATSTL进行,写入ILATST的值跟ILAT的值进行按位或操作,结果重新装入ILAT,因此对ILATST写入1时可将ILAT中相应位置1,对寄存器ILATST写入0则不能改变ILAT中的值;其次对ILAT的清0 操作通过ILATCLH、ILATCLL寄存器进行,写入ILATCL的值跟寄存器ILAT中的值按为与操作,得到结果重新载入ILAT中,因此对ILATCL写入1时,不能改变ILAT的值,写入0,可将ILAT清0。可用ILATST、  ILATCL软件模拟中断事件。

      IMASK中断屏蔽寄存器,只有置1才允许响应相应的中断服务。

      PMASK中断指针屏蔽寄存器,锁存正在执行的中断,如果允许中断嵌套,只有在高于目前PMASK位的中断才可以响应。服务程序执行完毕后,系统执行RTI或RETI指令清0,利用RDS指令可强制清0。

 

        INTCTL:中断控制寄存器,用于定义中断引脚的中断触发类型(电平或边沿触发)、控制定时器0、1运行或停止。

     

 

         SQCTL:程序控制寄存器,是32位寄存器,高20位保留,对它的操作仅能通过SQCTLST和SQCTLCL进行,SQCTL_GIE位控制全局中断,1使能,0屏蔽。



库函数:

interrupt(SIGIRQ2, irq2_int);//将服务程序的函数指针放入中断向量表,同时开启对应中断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值