我的系统运行来自 PWM、GPI、计时器和 ECAP 的大量 ISR。 我想将我的 PWM 和外部 GPI ISR 优先于所有其他 ISR。
在处理当前"较低"优先级 ISR 之前、如何设置和处理将检查 PWM 或 GPI ISR 标志是否未设置的 ISR 处理程序?
提前感谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我的系统运行来自 PWM、GPI、计时器和 ECAP 的大量 ISR。 我想将我的 PWM 和外部 GPI ISR 优先于所有其他 ISR。
在处理当前"较低"优先级 ISR 之前、如何设置和处理将检查 PWM 或 GPI ISR 标志是否未设置的 ISR 处理程序?
提前感谢。
你好、Tim
在 R5中、我们有用于中断管理的 VIM。 每个中断都有其自己的4位可编程优先级--> R5FST_VIM_PRI_INT_j 寄存器。
VIM 通过一个具有更高优先级的中断来支持当前活动中断的中断。
VIM 优先级方案:00 =最高优先级- 15 =最低优先级。
当一个中断从挂起状态变为活动状态时 、该中断被载入 相应的活动寄存 器、并且所有优先级相等或较低的中断都被屏蔽。
2. 如果在该中断被清除之前、另一个较高优先级的中断到达、 则 IRQn 有效、该中断正常挂起。
3.如果 CPU 将此 中断切换到活动 状态,则当前活动的中断将被压入堆栈。 当通过读取 R5Fss_VIM_FIQVEC/ R5Fss_VIM_IRQVEC 寄存 器清除中断时、如果堆栈上有任何中断、第一个条目会弹出并返回 R5Fss_VIM_ACTIQ / R5Fss_VIM_ACTIIRQ 寄存器、以便软件保留原始上下文并继续先前的操作。
更多详细信息、请参阅 TRM 的10.2.1.8 VIM 中断处理部分。

可以在构建中断时设置中断的优先级。