I wish to have 3 tasks scheduled at 3 different periods to sample 3 sensors on stm32f446re

If I have a sensor, I managed to sample it periodically through a task with the following code:

void Sensor1_Task(void *pvParameters) {
    TickType_t lastWakeTime = xTaskGetTickCount();
    const TickType_t samplingPeriod = pdMS_TO_TICKS(20);

    while (1) {
        // Start ADC conversion for sensor 1
        HAL_ADC_Start(&hadc1);
        // Wait for ADC conversion to complete
        HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
        // Read ADC value for sensor 1
        sensor1_value = HAL_ADC_GetValue(&hadc1);
        // Stop ADC conversion for sensor 1
        HAL_ADC_Stop(&hadc1);

        // Delay until next sampling time
        vTaskDelayUntil(&lastWakeTime, samplingPeriod);
    }
}

If now I have three sensors connected to the same ADC that I want to sample at 20ms, 80ms and 1s, and I want to associate one task to each sensor, how shall I do?
I guess I have to add a line at the beginning of each task to specify which channel I want to use, i.e. before the HAL_ADC_Start function I need to specify which channel I want to use as input of the ADC. How to do that?

poster case for pvParameters as an instance discriminator.

If you are asking how to specify channel in the HAL_ADC APIs, you need to reach out to ST for that. If you are asking how to use the same task function and use different sampling periods and ADC channels, you can use pvParameters as mentioned by @RAc. Here is one way to do that -

typedef struct Sensor
{
    uint32_t channel;
    TickType_t samplingPeriod;
} Sensor_t;

Sensor_t sensor1, sensor2, sensor3;

int main( void )
{
    sensor1.channel = 1;
    sensor1.samplingPeriod = pdMS_TO_TICKS(20);

    sensor1.channel = 2;
    sensor1.samplingPeriod = pdMS_TO_TICKS(80);

    sensor1.channel = 3;
    sensor1.samplingPeriod = pdMS_TO_TICKS(1000);

    xTaskCreate( Sensor_Task, "S1", 1024, &( sensor1 ), tskIDLE_PRIORITY, NULL );
    xTaskCreate( Sensor_Task, "S2", 1024, &( sensor2 ), tskIDLE_PRIORITY, NULL );
    xTaskCreate( Sensor_Task, "S3", 1024, &( sensor3 ), tskIDLE_PRIORITY, NULL );
}

void Sensor_Task(void *pvParameters)
{
    TickType_t lastWakeTime = xTaskGetTickCount();
    Sensor_t * pSensor = ( Sensor_t * )pvParameters;

    //Set the channel to pSensor->channel using ADC APIs.
    while (1)
    {
        // Start ADC conversion for sensor 1
        HAL_ADC_Start(&hadc1);
        // Wait for ADC conversion to complete
        HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
        // Read ADC value for sensor 1
        sensor1_value = HAL_ADC_GetValue(&hadc1);
        // Stop ADC conversion for sensor 1
        HAL_ADC_Stop(&hadc1);

        // Delay until next sampling time
        vTaskDelayUntil(&lastWakeTime, pSensor->samplingPeriod);
    }
}