ST NUCLEO-F401RE pinout

ST's official STM32F401 board with Arduino Uno style sockets and a built-in ST-LINK programmer and debugger. 3.3 V logic, most pins tolerate 5 V.

ST NUCLEO-F401RE pinoutSTM32F401RET6RX/D0 · PA3ADC1_IN3TX/D1 · PA2ADC1_IN2D2 · PA10UART1_RXPWM/D3 · PB3SWOD4 · PB5TIM3_CH2PWM/D5 · PB4TIM3_CH1PWM/D6 · PB10I2C2_SCLD7 · PA8TIM1_CH1D8 · PA9UART1_TXPWM/D9 · PC7UART6_RXPWM/CS/D10 · PB6SPI_CSPWM/MOSI/D11 · PA7ADC1_IN7MISO/D12 · PA6ADC1_IN6SCK/D13 · PA5ADC1_IN5SDA/D14 · PB9I2C_SDASCL/D15 · PB8I2C_SCLGNDAVDDIOREFNRST3V35VGNDGNDVINA0 · PA0ADC1_IN0A1 · PA1ADC1_IN1A2 · PA4ADC1_IN4A3 · PB0ADC1_IN8A4 · PC1ADC1_IN11A5 · PC0ADC1_IN10PC10 · 42SPI3_SCKPC11 · 43SPI3_MISOPC12 · 44SPI3_MOSIPD2 · 50TIM3_ETRVDDE5VBOOT0GNDIOREFPA13SWDIORESETPA14SWCLK+3.3VPA15JTDI+5VGNDGNDPB7 · 23I2C1_SDAGNDPC13 · 45RTC_OUTVINPC14 · 46OSC32_INPC15 · 47OSC32_OUTPA0ADC1_IN0PH0 · 112OSC_INPA1ADC1_IN1PH1 · 113OSC_OUTPA4ADC1_IN4VBATPB0 · 16ADC1_IN8PC2 · 34ADC1_IN12PC1 · 33ADC1_IN11PC3 · 35ADC1_IN13PC0 · 32ADC1_IN10PC9 · 41TIM3_CH4PC8 · 40TIM3_CH3PB8 · 24I2C_SCLPC6 · 38UART6_TXPB9 · 25I2C_SDAPC5 · 37ADC1_IN15AVDDU5VGNDPA5ADC1_IN5PA12USB_DPPA6ADC1_IN6PA11USB_DMPA7ADC1_IN7PB12 · 28SPI2_NSSPB6 · 22SPI_CSPC7 · 39UART6_RXGNDPA9UART1_TXPB2 · 18BOOT1PA8TIM1_CH1PB1 · 17ADC1_IN9PB10 · 26I2C2_SCLPB15 · 31SPI2_MOSIPB4 · 20TIM3_CH1PB14 · 30SPI2_MISOPB5 · 21TIM3_CH2PB13 · 29SPI2_SCKPB3 · 19SWOAGNDPA10UART1_RXPC4 · 36ADC1_IN14PA2ADC1_IN2PA3ADC1_IN3
Top view, USB connector on the left. Colors: red power, grey ground, green GPIO, yellow analog, orange USB serial, blue I2C.

At a glance

Chip
STM32F401RE (STM32F401RET6)
Processor
Arm Cortex-M4 with FPU at 84 MHz, 96 KB SRAM, 512 KB flash
Logic level
3.3 V. Not 5 V tolerant unless marked below.
Flashing tool
STM32CubeProgrammer, stlink or dfu-util
Arduino board (FQBN)
STMicroelectronics:stm32:Nucleo_64:pnum=NUCLEO_F401RE
Live pin view in BoardPilot
Yes (diagnostic agent available)

Pins to avoid or use with care

Strapping pins: BOOT0, PB2

Their level at reset changes how the board boots. Usually fine after boot.

USB serial: RX/D0 (PA3), TX/D1 (PA2)

Used for uploading and the serial monitor. Anything connected here can break uploads.

Debug port: PA13, PA14

SWD/JTAG. Using them can stop a debugger from reaching the chip.

Used on the board: RX/D0 (PA3), TX/D1 (PA2), PC13, PC14, PC15, PH0, PH1

Already connected to something on the board (see the notes in the table).

Good pins for LEDs, buttons and signals

D2, D4, PWM/D5, PWM/D6, D7, D8, PWM/D9, PWM/D3, PWM/CS/D10, PWM/MOSI/D11, MISO/D12

Default pins in Arduino

I2C
SDA = SDA/D14, SCL = SCL/D15. Only these pins work with the Wire library defaults. Wire uses PB9 (D14) for SDA and PB8 (D15) for SCL. Only specific STM32 pin pairs can do I2C (for example PB7/PB6 with Wire.setSDA/setSCL).
SPI
MOSI = PWM/MOSI/D11, MISO = MISO/D12, SCK = SCK/D13, CS = PWM/CS/D10.
Analog inputs
A0, A1, A2, A3, A4, A5 (0–3.3 V)
5 V tolerant pins
RX/D0 (PA3), TX/D1 (PA2), D2 (PA10), PWM/D3 (PB3), D4 (PB5), PWM/D5 (PB4), PWM/D6 (PB10), D7 (PA8), D8 (PA9), PWM/D9 (PC7), PWM/CS/D10 (PB6), PWM/MOSI/D11 (PA7), MISO/D12 (PA6), SCK/D13 (PA5), SDA/D14 (PB9), SCL/D15 (PB8), A0 (PA0), A1 (PA1), A2 (PA4), A3 (PB0), A4 (PC1), A5 (PC0), PC10, PC11, PC12, PD2, PA13, PA14, PA15, PB7, PC13, PC14, PC15, PH0, PH1, PC2, PC3, PC9, PC8, PC6, PC5, PA12, PA11, PB12, PB2, PB1, PB15, PB14, PB13, PC4

How to flash it

Plug the USB cable into the mini-USB port on the ST-LINK end. No button press is needed.

All 99 pins

PinGPIOChip pinFunctionsNotes
RX/D03PA3GPIO, ADC1_IN3, UART2_RX, TIM2_CH4, TIM5_CH4, TIM9_CH2, PWMNot connected to this header by default: PA3/PA2 go to the ST-LINK USB serial port (solder bridges SB13/SB14 on, SB62/SB63 off). Serial uses them.
TX/D12PA2GPIO, ADC1_IN2, UART2_TX, TIM2_CH3, TIM5_CH3, TIM9_CH1, PWMNot connected to this header by default: PA3/PA2 go to the ST-LINK USB serial port (solder bridges SB13/SB14 on, SB62/SB63 off). Serial uses them.
D210PA10GPIO, UART1_RX, TIM1_CH3, USB_ID, PWM
PWM/D319PB3GPIO, SWO, TIM2_CH2, SPI1_SCK, SPI3_SCK, I2C2_SDA, PWMAlso the SWO debug trace line to the ST-LINK (SB15). Fine as a normal pin.
D421PB5GPIO, TIM3_CH2, SPI1_MOSI, SPI3_MOSI, PWM
PWM/D520PB4GPIO, TIM3_CH1, SPI1_MISO, SPI3_MISO, I2C3_SDA, PWM
PWM/D626PB10GPIO, I2C2_SCL, SPI2_SCK, TIM2_CH3, PWM
D78PA8GPIO, TIM1_CH1, I2C3_SCL, UART1_CK, MCO1, PWM
D89PA9GPIO, UART1_TX, TIM1_CH2, USB_VBUS, PWM
PWM/D939PC7GPIO, UART6_RX, TIM3_CH2, PWM
PWM/CS/D1022PB6GPIO, SPI_CS (default), I2C1_SCL, UART1_TX, TIM4_CH1, PWM
PWM/MOSI/D117PA7GPIO, ADC1_IN7, SPI_MOSI (default), SPI1_MOSI, TIM1_CH1N, TIM3_CH2, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
MISO/D126PA6GPIO, ADC1_IN6, SPI_MISO (default), SPI1_MISO, TIM3_CH1, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
SCK/D135PA5GPIO, ADC1_IN5, SPI_SCK (default), SPI1_SCK, TIM2_CH1, PWMGreen user LED LD2 is on this pin (HIGH = on, solder bridge SB21).
SDA/D1425PB9GPIO, I2C_SDA (default), I2C1_SDA, TIM4_CH4, TIM11_CH1, SPI2_NSS, PWMDefault I2C data pin (Wire SDA).
SCL/D1524PB8GPIO, I2C_SCL (default), I2C1_SCL, TIM4_CH3, TIM10_CH1, PWMDefault I2C clock pin (Wire SCL).
GND—
AVDD—Analog supply / ADC reference (AREF on Arduino boards). Tied to 3.3 V by SB57.
IOREF—Tells shields the logic level: 3.3 V.
NRST—Connect to GND to reset the board (same as the black RESET button).
3V3—3.3 V output for sensors.
5V—5 V output (from USB by default).
GND—
GND—
VIN—Input for 7 to 12 V (with jumper JP5 on E5V/VIN). It gives no power when the board runs from USB.
A00PA0GPIO, ADC1_IN0, TIM2_CH1, TIM5_CH1, UART2_CTS, WKUP, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
A11PA1GPIO, ADC1_IN1, TIM2_CH2, TIM5_CH2, UART2_RTS, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
A24PA4GPIO, ADC1_IN4, SPI1_NSS, SPI3_NSS5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
A316PB0GPIO, ADC1_IN8, TIM3_CH3, TIM1_CH2N, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
A433PC1GPIO, ADC1_IN11Analog input PC1. Solder bridges SB46/SB56 can switch it to PB9 (I2C SDA); default is PC1. 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
A532PC0GPIO, ADC1_IN10Analog input PC0. Solder bridges SB52/SB51 can switch it to PB8 (I2C SCL); default is PC0. 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
PC1042GPIO, SPI3_SCK, SDIO_D2
PC1143GPIO, SPI3_MISO, SDIO_D3
PC1244GPIO, SPI3_MOSI, SDIO_CK
PD250GPIO, TIM3_ETR, SDIO_CMD
VDD—STM32 supply, 3.3 V.
E5V—Input for an external 5 V supply (4.75 to 5.25 V, jumper JP5 on E5V). Gives no power from USB.
BOOT0—HIGH at reset starts the ST bootloader instead of your program. Leave it LOW (default).
GND—
IOREF—Same as IOREF on the Arduino header.
PA1313GPIO, SWDIOSWD debug line to the on-board ST-LINK (SWDIO). Do not use it as I/O or programming stops working.
RESET—Same as RESET on the Arduino header.
PA1414GPIO, SWCLKSWD debug line to the on-board ST-LINK (SWCLK). Do not use it as I/O or programming stops working.
+3.3V—Same as 3V3 on the Arduino header.
PA1515GPIO, JTDI, TIM2_CH1, SPI1_NSS, SPI3_NSS, PWM
+5V—Same as 5V on the Arduino header.
GND—
GND—
PB723GPIO, I2C1_SDA, UART1_RX, TIM4_CH2, PWM
GND—
PC1345GPIO, RTC_OUTBlue USER button B1 is wired to this pin (SB17). Weak pin: do not drive LEDs from it.
VIN—Same as VIN on the Arduino header.
PC1446GPIO, OSC32_IN32.768 kHz crystal X2 pin. Not connected to this header on MB1136 C-02 and later (SB48/SB49 off).
PC1547GPIO, OSC32_OUT32.768 kHz crystal X2 pin. Not connected to this header on MB1136 C-02 and later (SB48/SB49 off).
PA00GPIO, ADC1_IN0, TIM2_CH1, TIM5_CH1, UART2_CTS, WKUP, PWMSame signal as Arduino pin A0.
PH0112GPIO, OSC_INHigh-speed clock input (8 MHz from the ST-LINK on MB1136 C-02 and later). Not usable as a normal pin.
PA11GPIO, ADC1_IN1, TIM2_CH2, TIM5_CH2, UART2_RTS, PWMSame signal as Arduino pin A1.
PH1113GPIO, OSC_OUTHigh-speed clock input (8 MHz from the ST-LINK on MB1136 C-02 and later). Not usable as a normal pin.
PA44GPIO, ADC1_IN4, SPI1_NSS, SPI3_NSSSame signal as Arduino pin A2.
VBAT—RTC backup supply. Tied to 3.3 V on this board (SB45).
PB016GPIO, ADC1_IN8, TIM3_CH3, TIM1_CH2N, PWMSame signal as Arduino pin A3.
PC234GPIO, ADC1_IN12, SPI2_MISO5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
PC133GPIO, ADC1_IN11Same signal as Arduino pin A4.
PC335GPIO, ADC1_IN13, SPI2_MOSI5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
PC032GPIO, ADC1_IN10Same signal as Arduino pin A5.
PC941GPIO, TIM3_CH4, I2C3_SDA, MCO2, SDIO_D1, PWM
PC840GPIO, TIM3_CH3, SDIO_D0, PWM
PB824GPIO, I2C_SCL (default), I2C1_SCL, TIM4_CH3, TIM10_CH1, PWMSame signal as Arduino pin D15.
PC638GPIO, UART6_TX, TIM3_CH1, PWM
PB925GPIO, I2C_SDA (default), I2C1_SDA, TIM4_CH4, TIM11_CH1, SPI2_NSS, PWMSame signal as Arduino pin D14.
PC537GPIO, ADC1_IN155 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
AVDD—Same as AVDD on the Arduino header.
U5V—5 V from the ST-LINK USB connector.
GND—
PA55GPIO, ADC1_IN5, SPI_SCK (default), SPI1_SCK, TIM2_CH1, PWMSame signal as Arduino pin D13. Green user LED LD2 is on this pin (HIGH = on, solder bridge SB21).
PA1212GPIO, USB_DP, UART1_RTS, UART6_RX, TIM1_ETRUSB data line of the STM32, but no USB connector is wired to it on this board.
PA66GPIO, ADC1_IN6, SPI_MISO (default), SPI1_MISO, TIM3_CH1, PWMSame signal as Arduino pin D12.
PA1111GPIO, USB_DM, UART1_CTS, UART6_TX, TIM1_CH4, PWMUSB data line of the STM32, but no USB connector is wired to it on this board.
PA77GPIO, ADC1_IN7, SPI_MOSI (default), SPI1_MOSI, TIM1_CH1N, TIM3_CH2, PWMSame signal as Arduino pin D11.
PB1228GPIO, SPI2_NSS, TIM1_BKIN
PB622GPIO, SPI_CS (default), I2C1_SCL, UART1_TX, TIM4_CH1, PWMSame signal as Arduino pin D10.
PC739GPIO, UART6_RX, TIM3_CH2, PWMSame signal as Arduino pin D9.
GND—
PA99GPIO, UART1_TX, TIM1_CH2, USB_VBUS, PWMSame signal as Arduino pin D8.
PB218GPIO, BOOT1BOOT1: only matters when BOOT0 is HIGH at reset. Normal pin otherwise.
PA88GPIO, TIM1_CH1, I2C3_SCL, UART1_CK, MCO1, PWMSame signal as Arduino pin D7.
PB117GPIO, ADC1_IN9, TIM3_CH4, TIM1_CH3N, PWM5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
PB1026GPIO, I2C2_SCL, SPI2_SCK, TIM2_CH3, PWMSame signal as Arduino pin D6.
PB1531GPIO, SPI2_MOSI, TIM1_CH3N, PWM
PB420GPIO, TIM3_CH1, SPI1_MISO, SPI3_MISO, I2C3_SDA, PWMSame signal as Arduino pin D5.
PB1430GPIO, SPI2_MISO, TIM1_CH2N, PWM
PB521GPIO, TIM3_CH2, SPI1_MOSI, SPI3_MOSI, PWMSame signal as Arduino pin D4.
PB1329GPIO, SPI2_SCK, TIM1_CH1N, PWM
PB319GPIO, SWO, TIM2_CH2, SPI1_SCK, SPI3_SCK, I2C2_SDA, PWMSame signal as Arduino pin D3.
AGND—Analog ground (joined to GND).
PA1010GPIO, UART1_RX, TIM1_CH3, USB_ID, PWMSame signal as Arduino pin D2.
PC436GPIO, ADC1_IN145 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V.
PA22GPIO, ADC1_IN2, UART2_TX, TIM2_CH3, TIM5_CH3, TIM9_CH1, PWMSame signal as Arduino pin D1. Not connected to this header by default: PA3/PA2 go to the ST-LINK USB serial port (solder bridges SB13/SB14 on, SB62/SB63 off). Serial uses them.
PA33GPIO, ADC1_IN3, UART2_RX, TIM2_CH4, TIM5_CH4, TIM9_CH2, PWMSame signal as Arduino pin D0. Not connected to this header by default: PA3/PA2 go to the ST-LINK USB serial port (solder bridges SB13/SB14 on, SB62/SB63 off). Serial uses them.

Check your wiring with BoardPilot

BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.

Download BoardPilot

Sources

← All boards