ARM Cortex M NonMaskable Interrupt也是NonClearable?

时间:2017-09-25 22:25:28

标签: arm interrupt-handling cortex-m3

我正在使用一个非常定制的非公共安全IC,它具有ARM Cortex M3内核。

如果出现hw安全违规,这个IC会触发一个NMI中断,所以它很好,我正在做我需要的任何违规行为。

但是当发生违规时,它总是一次又一次地进入NMI Handler。

我们可能需要清除中断挂起标志,但是应该直接清除它。 因为SCB-> ICSR bit31表示“进入处理程序会将此位清除为0”。

我还尝试使用NVIC_ClearPendingIRQ()清除挂起的标志,但是当NMI为-14时它不接受负的IRQ值。

我试图手动设置NVIC-> ICPR [0] =(1<<<<<<<<<<< 2>像制造商的例子(但制造商的例子重置NMI处理程序中的设备,这是不同的情况),但它不起作用。

定制IC和自定义外部事件触发通用Cortex M NMI中断并且可以是IC的特定情况但是NMI有任何限制,例如“你无法清除NMI挂起标志,你必须重置它bla bla “?

谢谢

1 个答案:

答案 0 :(得分:1)

NMI就像其他任何中断一样。

来自Cortex-M Generic Device User Guide

  
      
  • 对于电平敏感中断,当处理器从ISR返回时,NVIC对中断信号进行采样。如果信号是   断言,中断的状态变为挂起,这可能是   使处理器立即重新进入ISR。否则,   中断状态变为无效。
  •   
  • 对于脉冲中断,NVIC继续监视中断信号,如果是脉冲中断,则中断状态变为   待定和活跃。在这种情况下,当处理器从中返回时   ISR中断状态变为挂起,这可能会导致   处理器立即重新进入ISR。
  •   

这是说除非你清除产生中断请求的硬件状态,否则中断将再次挂起。

清除中断挂起状态只允许您在请求已被清除时禁用IRQ。

有关安全设备如何运作的详细信息,您需要与供应商联系。他们可能对你在这里讨论他们的产品感到不满......