Multiple interrupts handling in STM32 boards

Hello,
I am working with the NUCLEO F46ZG board.
The project aims to read data using multiple ADC channels and then send this data using MQTT.
Here is the workflow, ADC is configured using DMA, and an interrupt is generated after the End Of Conversion of all channels (CONTINUOUS mode ENABLED). Using the xTaskNotifyFromISR() function, the task “ADC_storeDATA” will resume. After NBR_OF_SAMPLES, “MQTT_sending” will be activated by a binary semaphore.
When only ADC and FreeRTOS are configured, everything works fine and all buffers are full.
When MQTT is added, the code fails in configASSERT( xTaskToNotify).


Is there anyone who can help?
NB: MQTT uses Ethernet with interruption enabled (My assumption is that FreeRTOS fails when handling multiple interrupts).

FreeRTOS itself doesn’t handle any interrupt except its systick (by default).
Why is the task handle NULL (that’s the reason why the assert kicks in) ?
Is it possible that the interrupt is enabled resp. the ADC is armed too early means before the task is created and the task handle is initialized ?
You could put a breakpoint at the ADC ISR and step through the init code with the task creation etc. to verify that everything is initialized properly before enabling interrupts etc.

HAL_ADC_ConvCpltCallback is a weak function which you seem to override in freertos.c. Examine HAL_ADC_ConvCpltCallback in freertos.c and see why task handle is NULL. As @hs2 suggested, most likely the interrupt is firing before the task is created.