我已经阅读了这个question,当一个中断执行时它不是一个有效的答案,它不会一直禁用所有其他中断。它基于中断类型(在某些情况下,我们需要在程序中手动完成)。
我的问题是在执行a时发生中断时会发生什么 打断 ???如果正在执行低优先级中断,则为高 优先级中断会发生什么?
答案 0 :(得分:2)
这取决于系统。如果微控制器/中断控制器支持嵌套中断,并且应用程序启用该功能,则优先级较高的中断将中断较低优先级的中断。在这种情况下,当优先级较高的中断完成时,优先级较低的中断将恢复。但是,如果系统不支持嵌套中断,则当活动中断服务程序完成时,后续中断请求将挂起并进行服务。
答案 1 :(得分:1)
对于SO
来说,它太宽泛了,我认为它是基于拱形的。
我试着给你一个简短的概述,期待一些DV。 ;)
主要是,如果arch允许嵌套interrupts
,则执行跳转到高级别中断的ISR
时,优先级较低的中断会被中断。
但是你可以{{1>}( N M 可疑我 nterrupt)优先于所有其他{{1}并且无法禁用。
通常(我认为)所有的arch都有一个全局中断启用标志,因此必须启用它才能允许其他中断服务。也意味着ISR在执行时可以在其工作期间禁用其他中断。
例如,您可以考虑NMI
实现:在中断期间使用Timer可以轻松开发调度程序。此中断必须具有较低的优先级,并且不得停止其他interrupts
(通常):尽快为RTOS
提供服务但不考虑interrupts
调度程序的上下文切换。
答案 2 :(得分:1)
问题是
当RTOS当前在任何任务或其他ISR中发生中断时会发生什么?
我写了两个商业RTOS,没有满足所有标准的答案。但是,我可以像问题一样广泛回答:
根据允许的内容,它将充当正常中断。这个问题的问题在于“发生了什么”有点宽泛 - 一些RTOS在幕后工作时会中断。所以,问题是这个问题不够具体。
关于任务,“会发生什么”是关于任务的任何事情。中断是一个中断,与任务的关系取决于编程。由于我不再读心思,所以问题不够具体。
最佳答案是42(HHGTTG)
答案 3 :(得分:0)
没有一个答案,有时没有任何事情发生,较低的prio中断继续完成,有时较高的一个中断较低的。它首先取决于芯片/系统设计,其次取决于各个程序员全面的RTOS和应用程序人员。
或者另一种说法是,这些人希望在他们的设计和实施中发生什么。