Encontré esta respuesta en STM32 Descripción de las configuraciones de GPIO
- GPIO_PuPd (Pull-up / Pull-down)
En los circuitos digitales, es importante que las líneas de señal nunca puedan "flotar". Es decir, necesitan estar siempre en un estado alto o bajo. Cuando está flotando, el estado es indeterminado y causa varios tipos diferentes de problemas.
La forma de corregir esto es agregar una resistencia de la línea de señal a Vcc o Gnd. De esa manera, si la línea no se impulsa de forma activa alta o baja, la resistencia hará que el potencial se desvíe 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, se "arrastra" activamente a tierra. Por el contrario, cuando la salida se establece en alta, se "empuja" activamente hacia Vcc. Simplificado, se ve así:
Porotrolado,unasalidadedrenajeabiertosoloestáactivaenunadirección.Puedetirardelpasadorhaciaelsuelo,peronopuedeelevarlo.Imaginalaimagenanterior,perosinelMOSFETsuperior.Cuandonoestátirandoatierra,elMOSFET(ladoinferior)simplementenoesconductor,loquehacequelasalidaflote.
Paraestetipodesalida,esnecesarioqueseagregueunaresistenciadepull-upalcircuito,loqueharáquelalíneaseelevecuandonoestébajo.Puedehacerestoconunaparteexterna,oconfigurandoelvalordeGPIO_PuPdenGPIO_PuPd_UP.
ElnombreprovienedelhechodequeeldrenajedelMOSFETnoestáconectadointernamenteanada.Estetipodesalidatambiénsedenomina"colector abierto" cuando se usa un BJT en lugar de un MOSFET.
Básicamente, esto controla la velocidad de giro (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 giro, más ruido se irradia desde el circuito. Es una buena práctica mantener la velocidad de respuesta lenta y solo aumentarla si tiene una razón específica.