Не могу разобраться в чём дело, но VRefInt может выдавать 2 сильно отличающихся показания. После недолгих разбирательств пришёл вот к таким вариантам:
Вариант 1.- Включаем VRefInt
- Настраиваем АЦП
- Делаем паузу в 1 сек
- Выбираем канал 17 для преобразования
- Выполняем преобразование и читаем результат
- Делаем паузу в 1 сек
- Ещё раз выполняем преобразование и читаем результат
В этом случае получаем 2 значения - 1709 и 1557
Вариант 2.- Включаем VRefInt
- Настраиваем АЦП
- Делаем паузу в 1 сек
- Выбираем канал 17 для преобразования
- Выполняем преобразование и читаем результат
- Делаем паузу в 1 сек
- Заново выбираем канал 17 для преобразования
- Ещё раз выполняем преобразование и читаем результат
В этом случае получаем 1709 и 1710
Преобразования запускаются обычным образом выставлением бита ADC_CR2_SWSTART. АЦП настроено на выполнение преобразования одного регулярного канала.
Причём такое наблюдается только с внутренними каналами (VrefInt и TempSensor). Внешние каналы ведут себя совершенно нормально. В чём может быть дело?