diff --git a/portable/ThirdParty/GCC/Posix/port.c b/portable/ThirdParty/GCC/Posix/port.c index 4f7d8b609..101364630 100644 --- a/portable/ThirdParty/GCC/Posix/port.c +++ b/portable/ThirdParty/GCC/Posix/port.c @@ -365,16 +365,19 @@ void vPortExitCritical( void ) static void prvPortYieldFromISR( void ) { - Thread_t * xThreadToSuspend; - Thread_t * xThreadToResume; + if( prvIsFreeRTOSThread() == pdTRUE ) + { + Thread_t * xThreadToSuspend; + Thread_t * xThreadToResume; - xThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); + xThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); - vTaskSwitchContext(); + vTaskSwitchContext(); - xThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); + xThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); - prvSwitchThread( xThreadToResume, xThreadToSuspend ); + prvSwitchThread( xThreadToResume, xThreadToSuspend ); + } } /*-----------------------------------------------------------*/