Тут все предельно просто. Когда надо измерить напряжение на входе контакта контроллера переключаем тип контакта на ADC_IN.

На цифровом входе смысла измерять напряжение нет - там либо 0 либо 1.
Нас же интересует какое-то переменное напряжение от 0 до 3.3 В. Допустим у нас есть делитель напряжения (из 2 резисторов) . У 1 резистора номинала зафиксирован, 2 резистор допустим терморезистор и его сопротивление меняется от температуры. Таким образом на входе микроконтроллера будет плавать напряжение от 0.5В до 2В (предположим).
В основном коде все банально , без использования прерываний и DMA выглядит примерно так:
uint16_t adc1 = 0;
HAL_ADC_Start ( & hadc1 );
HAL_ADC_PollForConversion ( & hadc1 , 100 );
adc1 = HAL_ADC_GetValue ( & hadc1 );
HAL_ADC_Stop ( & hadc1 );
printf ( "adc1=%d \n" , adc1 );