首页 理论教育 解析STM系列单片机中断输入及悬起问题

解析STM系列单片机中断输入及悬起问题

时间:2023-11-23 理论教育 版权反馈
【摘要】:图3.35中断在得到处理器响应之前被清除悬起状态当某中断的服务例程开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除,如图3.36所示。图3.36在处理器进入服务例程后对中断活跃状态的设置图3.37一直维持的中断请求导致服务例程返回后再次悬起该中断如果在服务例程执行时,中断请求释放了,但是在服务例程返回前又重新被置为有效,则Cortex-M3会记住此动作,重新悬起该中断,如图3.39所示。

解析STM系列单片机中断输入及悬起问题

中断输入和悬起行为也适用于NMI,只是NMI会立即无条件执行,除了特殊情况:若当前已经在执行NMI服务例程,或者CPU被调试器停止,或者被一些严重的系统错误锁定,则新的NMI请求也将悬起。中断悬起示意图如图3.34所示。

图3.34 中断悬起示意图

当中断输入脚有中断信号输入,该中断就被悬起。即使后来中断源取消了中断请求,已经被标记成悬起的中断也被记录了下来。到了系统中它的优先级最高时,就会得到响应。但是,如果在某个中断得到响应之前,其悬起状态被清除了(例如,在PRIMASK或FAULTMASK置位时软件清除了悬起状态标志),则中断被取消,如图3.35所示。

图3.35 中断在得到处理器响应之前被清除悬起状态

当某中断的服务例程开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除,如图3.36所示。在一个中断活跃后,直到其服务例程执行完毕,并且返回(也称为中断退出)了,才能对该中断的新请求予以响应。当然,新请求的响应也是由硬件自动清零悬起标志位。中断服务例程也可以在执行过程中把自己对应的中断重新悬起(但是使用时要注意避免进入“死循环”)。

如果中断源一直保持中断请求信号,该中断就会在其上次服务例程返回后再次被置为悬起状态,如图3.37所示。这一点Cortex-M3和传统的ARM7TDMI是相同的。(www.xing528.com)

另一方面,如果某个中断在得到响应之前,其请求信号以若干的脉冲的方式呈现,则被视为只有一次中断请求,多出的请求脉冲全部错失——这是中断请求太快,以致超出处理器反应限度的情况,如图3.38所示。

图3.36 在处理器进入服务例程后对中断活跃状态的设置

图3.37 一直维持的中断请求导致服务例程返回后再次悬起该中断

如果在服务例程执行时,中断请求释放了,但是在服务例程返回前又重新被置为有效,则Cortex-M3会记住此动作,重新悬起该中断,如图3.39所示。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈