STM32 ADC interrupt not invoking when used with FreeRTOS

I am working on a project that requires 3 channels of ADC1 and FreeRTOS.
I am using STM32F446RCT6.
I start ADC conversion at the start of the code
HAL_ADC_Start_IT(&hadc1);

Here is my implementation for ADC callback.
whereas array to hold data is described as:

volatile uint16_t ADC_raw[3] = {0};

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
	if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))    //if call to end of convesion
	{
		ADC_raw[counter] = HAL_ADC_GetValue(hadc);    //ADC value stores in array
		counter++;
		if(counter>2) counter = 0;
	}
 }

Now,
When I do not implement RTOS and just runs normal code in while(1) loop, it works well and values for ADC_raw is updated correctly.
But when I enable RTOS and run the same code, the ADC callback is never getting called and thus ADC_raw values are always zero.
I can’t figure out what can be the issue. Any help would be greatly appreciated.
Here is my configuration for ADC, interrupt is enabled, DMA is not used.

Is the application running as expected other than the ADC?
Is the ADC callback called from an interrupt? If so, has the interrupt vector table been remapped?
Have you read through the items here regarding interrupt priorities, defining configASSERT(), etc?

Hello Richard,
Thanks for replying.

Yes, ADC callback is called from an interrupt handler.
I have other interrupts like timer and usart receive running very well, only ADC doesn’t trigger.
All other tasks run very well as well.
FreeRTOS API is not called before it starts scheduler.

I am going through your provided link in detail now.