Existen 9 registros configurables para la STM32F401RE en 3 puertos A, B, **C

GPIOx → MODER

Permite configurar el modo de trabajo del puerto, en Input, Output, Alternative, Analog. Por defecto el valor del registro para cada pin es 00

Input: Usado Digitalmente para identificar señales lógicas como ‘0’ y ‘1’ Output: Usado Digitalmente para enviar señales lógicas como ‘0’ y ‘1’ Alternative: En ella se usan los pines para configurar módulos como USART, I2C, TIMERS, SPI Analog: Permitirá Configurar los módulos DAC y/o ADC

MODER [1:0] Mode
00 Input
01 Output
10 Alternative
11 Analog

GPIOx → OTYPER

Se define si el pin trabaja Push-Pull ó Open-Drain, en el primero, los pines serán configurados en el cero lógico como 0V y el uno lógico como 3.3V, Y en Open-Drain se usa el cero lógico o en caso contrario alta impedancia. El valor por defecto será 0

OTx Mode
0 Push-Pull
1 Open-Drain

GPIOx → OSPEEDR

Se realiza la configuración de la velocidad de cada uno de los pines. Por defecto se usará la velocidad alta: 10

OSPEEDR [1:0] Velocidad [MHz]
00 Baja 2 MHz
01 Media 10 MHz
10 Alta 50 MHz
11 Muy Alta >50 MHz

GPIOx → PUPDR

Permite la configuración de la resistencia de cada uno de los pines, existen 3 opciones: Pull-Up, Pull-Down o Ninguna de las dos. Valor por defecto Ninguna de las dos: 00

PUPDR [1:0] Mode
00 Ninguna
01 Pull-Up
10 Pull-Down

GPIOx → IDR y GPIO → ODR

GPIOx → IDR: Sirve para leer el estado lógico de los pines (”Solo Lectura”) GPIOx → ODR: Sirve para Activar el estado lógico de los pines (”Solo Escritura”)

GPIOx → AFRH y GPIOx → AFRL

Permiten configurar las funciones alternativas de cada uno de los pines