While the internal reference VREFINT present in all STM32 is not usable as direct ADC (or other analog functionality) reference, newer STM32 families have an internal reference source with a buffer, VREFBUF, which can be used in such capacity.
Many users don't realize, that even in those families, it's still the VREF+ pin which is the ADC reference input, and that the VREFBUF output is connected directly to VREF+ pin. This has several consequences:
- VREFBUF is unusable (and must not be switched on) in low-pin-count models, where VREF+ is internally connected to VDDA
- VREFBUF usage requires a specific value capacitor to be connected to VREF+
- if VREFBUF is to be used, VREF+ must not be connected to external reference or any other external voltage source
In most boards like Nucleo or Disco, VREF+ is connected to VDDA, either directly or through a solder bridge/resistor/jumper. If a user unaware of the latter requirement uses such board, the ADC outputs values which are surprisingly different (usually lower) than what would be expected due to the VREFBUF setting.
In a certain way, this is an opposite case to g208; but the corollary is the same: always start with checking VREF+ when using ADC (or other analog functionality).