关于 pxHigherPriorityTaskWoken

About pxHigherPriorityTaskWoken

xSemaphoreGiveFromISR 的描述中 http://www.freertos.org/a00124.html 写着:"From FreeRTOS V7.3.0 pxHigherPriorityTaskWoken is an optional parameter and can be set to NULL."

问题是:如果参数为NULL,并且有更高优先级的任务受信号量影响,是否会在ISR之后自动切换 - 没有portEND_SWITCHING_ISR( xHigherPriorityTaskWoken )

没有。 pxHigherPriorityTaskWokenflag 的目的只是指示需要上下文切换。然后您需要在您的 ISR 代码中调用 portEND_SWITCHING_ISR() 或 portYIELD_FROM_ISR() 以请求上下文切换。

如果将参数设置为 NULL,则上下文切换将在下一个节拍发生(如果使用默认设置,节拍每毫秒发生一次),而不是在 ISR 结束后立即发生。根据您的用例,这可能是可以接受的。