Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何禁用ARM Cortex M0+;中NVIC中断中的嵌套;?_Arm_Embedded_Interrupt Handling_Cortex M - Fatal编程技术网

如何禁用ARM Cortex M0+;中NVIC中断中的嵌套;?

如何禁用ARM Cortex M0+;中NVIC中断中的嵌套;?,arm,embedded,interrupt-handling,cortex-m,Arm,Embedded,Interrupt Handling,Cortex M,我已经开始使用ARM Cortex M0+进行GPIO中断。我想禁用ARM中断的嵌套功能。有什么办法吗。?我知道默认情况下,ARM中启用了嵌套,我想禁用它。ARM Cortex-M0/M0+不支持将中断优先级分组为抢占优先级(可嵌套)和子优先级(不可嵌套),例如M3/M4/M7 如果您希望防止中断嵌套;这两种方法都是必要的 将所有中断设置为相同的优先级,或 在进入和退出所有处理程序时禁用并重新启用中断 这些选项中的第一个是最简单的,但不提供对执行顺序的控制(这对于异步事件很少重要,但可能导致

我已经开始使用ARM Cortex M0+进行GPIO中断。我想禁用ARM中断的嵌套功能。有什么办法吗。?我知道默认情况下,ARM中启用了嵌套,我想禁用它。

ARM Cortex-M0/M0+不支持将中断优先级分组为抢占优先级(可嵌套)和子优先级(不可嵌套),例如M3/M4/M7

如果您希望防止中断嵌套;这两种方法都是必要的

  • 将所有中断设置为相同的优先级,或
  • 在进入和退出所有处理程序时禁用并重新启用中断

这些选项中的第一个是最简单的,但不提供对执行顺序的控制(这对于异步事件很少重要,但可能导致不确定的行为和计时)。第二种方法实际上并不阻止嵌套,但只允许在低优先级中断禁用中断之前进行嵌套—在它开始处理实际事件之前。其结果类似于Cortex-M3等网站上提供的次优先级行为。

请在ARM社区网站上阅读。也许这就是你需要的@anandamu16:你能详细说明一下为什么需要这个功能吗?当然,只要不使用多个优先级,就可以始终禁用中断嵌套。M0+缺乏Cortex M3风格的可配置子优先级,但是如果您需要优先级仲裁,但不包括中断条目。在不了解具体要求的情况下,很难帮助您。老实说,次优先级掩蔽有点深奥,通常不需要,除非去掉延迟的最后一个周期,在这种情况下,我建议重新考虑使用完全抢占。@Doynax:事实上,我最近正在处理Gpio级别触发的中断。但当按下按钮时,它会给我多个中断(这是因为多个中断发生在按钮按下完成的时间内)。我只想中断一次,直到Gpio处理程序执行完成。我也不想禁用GPIO中断。此外,在ARM Cortex M0+中断中默认启用嵌套是否正确?感谢Gaurav的参考,我将检查link@anandamu16当前位置恐怕我还没跟上你。一个单一的中断处理程序永远不会在没有一些明显扭曲的情况下在皮层上抢占自己的位置
M0+
。如果抢占中断源被设置为更高的优先级,则多个不同的中断处理程序(例如在两个GPIO端口上)可能会相互抢占。默认情况下,所有配置都具有相同的优先级,因此除非您选择了,否则不应出现这种情况。请注意,这是对问题的回答,而不是后续注释中描述的问题的解决方案。这似乎不是一个XY问题。