Setting up STM32
Follow the steps bellow to setup programming STM32 microcontrollers with the Arduino IDE (Option 1, top) or Visual Studio and Platform IO (Option 2, bottom).
Prepare
Install the STM32CubeProgrammer to upload to the STM32 microcontroller (available for Windows and Mac OS 64 bit).
Install the Dependencies
Make sure the device is in BOOT mode when uploading with Arduino IDE / Platform IO (see pinout diagram)
Option 1: Arduino IDE
Open Preferences > Additional Boards Manager URLs
Add a new line with the following URL: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Installed Libaries and Boards Managers should match the version specified in the documentation below.

Open the Boards Manager from the Tools menu.
Search for 'STM32 MCU based boards' and click INSTALL

Update the Board Settings in the Tools menu
Set board to 'Generic STM32F4 series'
Board part number to 'Generic F401RETx'
Upload method to 'STM32CubeProgrammer (DFU)'
USB support to 'CDC (generic 'Serial' supersede U(S)ART)'
U(S)ART support to 'Disabled (no Serial support)'
USB speed to 'Low/Full Speed'

The USB Serial port is only used for Serial Monitor, when the device is in RUN mode the USB Serial port will appear in the Arduino IDE (Tools > Port)
Upload your program using the upload button in the Arduino IDE
After uploading the Arduino IDE or Platform IO will enable RUN mode automatically. If the board has been RESET or disconnected from the POWER, the switch should be manually changed to RUN mode in order to run the program.
After manually switching to RUN mode press the RESET button on the STM32 microcontroller.
The program should be running now, if not check out the troubleshoot page.
Option 2: Visual Studio & Platform IO

[env:genericSTM32F401RE]
platform = ststm32
board = genericSTM32F401RE
framework = arduino
upload_protocol = dfu
monitor_speed = 115200
;only for monitoring serial data
;the monitor port name can be read when the device is in RUN mode
;monitor_port = COM3
board_build.mcu = stm32f401ret6
board_build.f_cpu = 84000000L
board_build.core = ststm32
build_flags =
-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC
-D USBCON
-D USBD_VID=0x0483
-D USBD_PID=0x0003
-D USB_MANUFACTURER="Unknown"
-D USB_PRODUCT="\"GENERIC_F401RETX\""
-D HAL_PCD_MODULE_ENABLED
lib_deps = askuric/Simple FOC@^2.3.4
Last updated
Was this helpful?