STM32 Nucleo-F401RE

Support for the STM32 Nucleo-F401RE. More...

Detailed Description

Support for the STM32 Nucleo-F401RE.


The Nucleo-F401RE is a board from ST's Nucleo family supporting a ARM Cortex-M4 STM32F401RE microcontroller with 96KiB of RAM and 512KiB of Flash.


Nucleo64 F401RE


Family ARM Cortex-M4
Vendor ST Microelectronics
Flash 512KiB
Frequency up to 84MHz
FPU yes
Timers 11 (2x watchdog, 1 SysTick, 6x 16-bit, 2x 32-bit [TIM2])
ADCs 1x 12-bit (16 channels)
SPIs 3
I2Cs 3
Vcc 1.7V - 3.6V
Datasheet Datasheet
Reference Manual Reference Manual
Programming Manual Programming Manual
Board Manual Board Manual

Implementation Status

Device ID Supported Comments
MCU STM32F401RE partly Energy saving modes not fully utilized
Low-level driver GPIO yes
PWM yes (7 pins available))
UART 2 UARTs USART2 via STLink/USB or D0(RX)/D1(TX) and USART6 on PA12(RX)/PA11(TX)
I2C 1 I2C
USB no
Timer 2 32 bit timers

Flashing the device

Flashing the Board Using OpenOCD

The ST Nucleo-F401RE board includes an on-board ST-LINK V2 programmer. The easiest way to program the board is to use OpenOCD. Once you have installed OpenOCD (look here for installation instructions), you can flash the board simply by typing

make BOARD=nucleo-f401re flash

and debug via GDB by simply typing

make BOARD=nucleo-f401re debug

Flashing the Board Using ST-LINK Removable Media

On-board ST-LINK programmer provides via composite USB device removable media. Copying the HEX file causes reprogramming of the board. This task could be performed manually; however, the cpy2remed (copy to removable media) PROGRAMMER script does this automatically. To program board in this manner, use the command:

make BOARD=nucleo-f401re PROGRAMMER=cpy2remed flash
This PROGRAMMER was tested using ST-LINK firmware 2.37.26. Firmware updates could be found on this STM webpage.

Supported Toolchains

For using the ST Nucleo-F401RE board we strongly recommend the usage of the GNU Tools for ARM Embedded Processors toolchain.

Issues with old Hardware Revisions

Some Nucleo 64 Boards come in different hardware revisions, which is located on a sticker at the backside of the board. As discussed in issue #6721, there are some issues with the external clock sources in revisions smaller than C-03. (This would also be true for all boards with board ID MB1136). The revision C-01 has a different configuration for the high speed external clock (HSE), which is used in RIOT. This could be fixed by reconfiguring some solder bridges as mentioned in the user manual, section 6.7.1. The other issue is, that revision C-01 also has no 32kHz oscillator, so the RTC module of RIOT cannot be used.


file  periph_conf.h