I'我一直在PSoC 5器件(Cortex M3)上使用bodog,并从示例中学习。当ISR必须使用“任务通知”或写入队列来发信号通知任务时,我发现此构造在所有中断服务例程中都使用了:
CY_ISR_PROTO(my_isr);
CY_ISR(my_isr)
{
portBASE_TYPE higher_priority_woken = pdFALSE;
uint32_t mask = 0;
mask = 端口SET_INTERRUPT_MASK_FROM_ISR();
{
xTaskNotifyFromISR(my_task_id, 0x1, eSetBits, &higher_priority_woken);
/* Can also be the following:
xQueueSendFromISR(my_queue, &some_data, &higher_priority_woken);
*/
}
portCLEAR_INTERRUPT_MASK_FROM_ISR(mask);
portEND_SWITCHING_ISR(higher_priority_woken);
}
那是什么 端口SET_INTERRUPT_MASK_FROM_ISR 和 portCLEAR_INTERRUPT_MASK_FROM_ISR 宏吗?他们没有出现在Richard Barry发现的例子中's "掌握bodog实时内核"本书,以及许多其他适用于其他架构(例如AVR)的示例。在寻找有关此信息时,我的Google-fu似乎很虚弱。谢谢!