Para al menos algunas MCU STM32F4, push-pull + pull-up/pull-down es una configuración GPIO válida, pero ¿para qué la usaría y por qué? Supongo que hay alguna razón más sensata que "Realmente sentí que necesitaba esos jugosos 100 µA adicionales de corriente desperdiciada por pin"...
La configuración está listada en la sección 8.3 del manual de referencia , en la página 269:
Básicamente, el gráfico muestra que los bits PUPDR controlan las conexiones pull-up y pull-down independientemente del bit OTYPER que cambia entre push-pull y drenaje abierto.
Probablemente, normalmente no establecería PUPDR en nada más que 00 al usar la configuración push-pull.
Una situación en la que podría hacerlo es si fuera a cambiar el pin entre las funciones de salida y entrada. Es posible que desee configurar el pull-up o el pull-down antes de cambiar al modo de entrada para evitar que la entrada esté en un estado realmente flotante.
Si, por alguna razón, decide desconectar PP pero deja PD, no tendrá fallas mientras cambia.
Wouter van Ooijen