ARM中断分析之五:按怎样的顺序清理中断的PND位才安全?

本文探讨了在ARM芯片中断控制器中,对于不同触发类型的中断(电平触发和边缘触发),如何安全地按照正确的顺序清零PND位,以确保系统稳定运行。介绍了两种清零顺序:1. 先清外设中断,再清中断控制器的中断;2. 先清中断控制器的中断,再清外设中断,并解释了适用场景。

按怎样的顺序清理中断的PND位才安全?

    下面是一款ARM芯片的一个中断控制器的寄存器图,涉及中断PND位的寄存器有“EINTPEND、SRCPND、INTPND”,另外外设控制器或外设芯片内也有PND相关的寄存器(这里称为:DevPND),既然有多级PND位,所以清理PND位的时候有个先后次序,而且这个顺序还不能搞错,搞错就会造成系统不稳定。


    在程序里面,当中断服务程序处理完外设中断后,就需要清零PND,以便接收设备下一次中断,如下代码所示:

//

// 清除中断标志
rEINTPEND = (1<<4); // 清除第二级的中断标识
rSRCPND = (1<<4); // 清除第一级的中断标识
rINTPND = rINTPND; // 清除mask过滤后的中断标识

因为产生中断的方式可以是电平触发,也可以是边缘触发,而这两者的清零PND顺序是有所不同的,这篇文章就是介绍如何清零PND,为什么要那样做。

略。。。以后补充。

结论是:
清零操作按照顺序分为两种,分别是:
1. 先清外设中断,再清中断控制器的中断。
2. 先清中断控制器的中断,再清外设中断。
第1种适用于电平触发,若是边缘触发则有可能造成掉失中断。
第2种适用于边缘触发,若是电平触发则有可能重复处理中断。

 

 

转载于:https://www.cnblogs.com/yfm1202/archive/2012/05/14/2499709.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值