Lsm6dsox interrupt task

I tried to implement binary semaphore . but not succeded yet.
can you look into that ?

{
  /* EXTI line interrupt detected */
  if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
  {
	  if(GPIO_Pin==MCU_IMU_INTERRUPT1_Pin){
	  extern SemaphoreHandle_t xInterruptSemaphore;
	  xInterruptSemaphore= xSemaphoreCreateBinary();
	  BaseType_t  xHigherPriorityTaskWoken = pdFALSE;
	  xSemaphoreGiveFromISR(xInterruptSemaphore,&xHigherPriorityTaskWoken);
	  portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
	  __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
	     HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}
void Thread_Lsm6dsox(void *argument)
{
	(void) argument;
//	 lsm6dsox_all_src_t all_source;
//	lsm6dsox_all_int_src_t ints;
//	uint8_t* INT1;
//	INT1=&ints;
//	int32_t ret_int;
//	ret_int = lsm6dsox_read_reg(&hi2c3,LSM6DSOX_READ, LSM6DSOX_ALL_INT_SRC,INT1, 1);
//	/* Check if Single Tap events */
//	lsm6dsox_all_sources_get(&hi2c3, &all_source);

	  for(;;) {
	if (xSemaphoreTake(xInterruptSemaphore,portMAX_DELAY)==pdPASS) {

	  /* Wait Events */
	 	HAL_GPIO_WritePin(MCU_LED1_R_GPIO_Port, MCU_LED1_R_Pin, GPIO_PIN_SET);
	    vTaskDelay(1000);
	    HAL_GPIO_WritePin(MCU_LED1_R_GPIO_Port, MCU_LED1_R_Pin, GPIO_PIN_RESET);
	  //  vTaskSuspend(NULL);
	   // osThreadYield();
}

	  }

}