在我们的 PIC32MX 上使用 FreeRTOS 之前,我们能够通过简单地使用 ISR 来处理中断,例如:
void __ISR(_INTERRUPT_1_VECTOR, ipl7auto) {
// Handle interrupt here
}
但是自从向我们介绍 FreeRTOS 后,我的讲师就让我们使用程序集包装器来处理中断。我们使用一个属性将中断向量绑定到我们要处理中断的函数,然后使用一些程序集来保存上下文,而不是这样:
void __attribute__((interrupt(ipl5), vector (_EXTERNAL_2_VECTOR))) vEXT2InterruptWrapper (void);
为什么我们需要在 FreeRTOS 中执行此操作?