ADC continuous conversion STM32F103
You forgot to enabled the ADC interrupts, which can be done something like this:

HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(ADC_IRQn);




The next thing with HAL's interrupt handling is that there are two weak function declaration.


for void ADC_IRQHandler()
for void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)


You have to implement the ADC_IRQHandler() first, this will be called when an interrupt is generated by the ADC. Inside this function you have to call the HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc), parameter is your ADC's handler (ADC_HandleTypeDef).

void ADC_IRQHandler()
{
    HAL_ADC_IRQHandler(&amp;hadc1);
    //HAL_ADC_IRQHandler(&amp;hadc2); &lt;--- In case of a second ADC
}


Now, HAL_ADC_IRQHandler() will check every kind of error for you (you can check it in its implementation) and if everything is fine, it will call the void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc). As it also has a weak declaration, so you have to implement the function.

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc-&gt;Instance == ADC1)
    {
        int converted_value = HAL_ADC_GetValue(hadc);
        // Do stuff
    }

    //if(hadc-&gt;Instance == ADC2)  // &lt;-- In case of a second ADC
    //{
    //
    //}
}




In STM32CubeMX, in the ADC1 Configuration window, there is tab called NVIC Settings. Here you can enable the global interrupts for ADC1 and ADC2, and if you do so, then STM32Cube will implements the void ADC_IRQHandler(void) in the stm32f1xx_it.c file.

/******************************************************************************/
/* STM32F4xx Peripheral Interrupt Handlers                                    */
/* Add here the Interrupt Handlers for the used peripherals.                  */
/* For the available peripheral interrupt handler names,                      */
/* please refer to the startup file (startup_stm32f4xx.s).                    */
/******************************************************************************/

/**
* @brief This function handles ADC1 and ADC2 global interrupts.
*/
void ADC_IRQHandler(void)
{
  /* USER CODE BEGIN ADC_IRQn 0 */

  /* USER CODE END ADC_IRQn 0 */
  HAL_ADC_IRQHandler(&amp;hadc1);
  /* USER CODE BEGIN ADC_IRQn 1 */

  /* USER CODE END ADC_IRQn 1 */
}




Also it's just a brief summary, so I suggest to read through the tutorial, @Eugene Sh showed you.