Encontré esta respuesta de STM32 Comprensión de la configuración de GPIO
- GPIO_PuPd (Pull-up / Pull-down)
En los circuitos digitales, es importante que nunca se permita que las líneas de señal "floten". Es decir, siempre deben estar en un estado alto o bajo. Cuando flota, el estado es indeterminado y causa algunos tipos diferentes de problemas.
La forma de corregir esto es agregar una resistencia desde la línea de señal a Vcc o Gnd. De esa manera, si la línea no se conduce activamente hacia arriba o hacia abajo, la resistencia hará que el potencial se desplace a un nivel conocido.
El ARM (y otros microcontroladores) tienen circuitos integrados para hacer esto. De esa manera, no necesita agregar otra parte a su circuito. Si elige "GPIO_PuPd_UP", por ejemplo, es equivalente a agregar una resistencia entre la línea de señal y Vcc.
- GPIO_OType (Tipo de salida):
Push-Pull: este es el tipo de salida que la mayoría de la gente considera "estándar". Cuando la salida baja, es activamente "tirada" a tierra. Por el contrario, cuando la salida se establece en alta, se "empuja" activamente hacia Vcc. Simplificado, se ve así:
Una salida de drenaje abierto, por otro lado, solo está activa en una dirección. Puede tirar del pasador hacia el suelo, pero no puede conducirlo alto. Imagine la imagen anterior, pero sin el MOSFET superior. Cuando no está tirando a tierra, el MOSFET (lado inferior) simplemente no es conductor, lo que hace que la salida flote.
Para este tipo de salida, debe haber una resistencia pull-up agregada al circuito, lo que provocará que la línea suba cuando no se maneje bajo. Puede hacer esto con una parte externa, o estableciendo el valor GPIO_PuPd en GPIO_PuPd_UP.
El nombre proviene del hecho de que el drenaje del MOSFET no está conectado internamente a nada. Este tipo de salida también se denomina "colector abierto" cuando se utiliza un BJT en lugar de un MOSFET.
Básicamente, esto controla la velocidad de respuesta (el tiempo de subida y el tiempo de caída) de la señal de salida. Cuanto más rápida sea la velocidad de respuesta, más ruido se irradia desde el circuito. Es una buena práctica mantener la velocidad de rotación lenta y solo aumentarla si tiene una razón específica.