Considerations when using internal pull-up/down resistors

Yes... You can... It's a proven feature. If you see pin structure in STM32 Reference manual, you can see that it has required components --

STM32 Pin structure

If this satisfies your requirements, then, you can do away with external components.

Edit Remember that at Power up, Pins will be tristated. If it does not hamper your application, it is good! That's why it's good practise to init IO section first and then go ahead with other peripherals.


In general, it is perfectly fine to use the internal pull-up or pull-down resistors.

Disadvantage is that you can forget to enable it from software, that can cause a little headache. The external pull-ups will always be there. So do not forget to enable the internal ones and save a lot of PCB area by reducing component number.

The STM32's internal pull-up and pull-down resistors usually have a value between \$ 30\small~k\Omega \$ and \$ 50\small~k\Omega \$.

enter image description here

You should always check if your application needs a certain pull-up or pull-down resistor value before using the internal resistors. For example do not use them with I2C, as these values will be too high for that.


Unless the pullup and pulldown resistors are active during reset (I suspect they aren't, but I'm not familiar with STM32 devices), there is an undefined pin state at reset. This is one major reason to use external pullup or pulldown resistors.