Is this normal for a 12 bit Microcontroller ADC (STM32F303)?
ADC errors that normally occur: -


Gain error typically 1% or thereabouts and this means that the digital value can be numerically 1% out so 4095 (not 4096) could be as low as 4054 or it could go the other way and saturate at 4095 with an input of 99% of VREF.
Zero error is also typically 1% and on some devices can accumulate with gain error meaning that at full-scale the reading could be +/-2% out. 98% of 4095 is 4013!
Integral non-linearity error - is something that probably isn't affecting things in this situation but it's worth reading about - what it means is that the perfect gain slope can bulge plus or minus in the middle ground by a few LSBs.
Dynamic non-linearity basically tells you how little or how much a single digital step could be in error but it's unlikely to be affecting you here.
Reference error is fairly obvious but, because you are using the input connected to the supply and the supply is set to be the reference there's nothing to worry much about here.


ADCs are not perfect.