АЦП

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

фотка 1

На цифровом входе смысла измерять напряжение нет - там либо 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 );