STM32duino I. – How to start with STM32 like Arduino

Arduino is very popular platform with support from huge community.

You can buy a lot of Arduino (compatible) boards – original Arduino, clone of Arduino with the same microcontroller (ATmega328, SAMD21) or different microcontroller (ESP32, ESP8266).

Arduino board with STM32 microcontroller belongs to the Arduino compatible boards with different microcontrollers.

LeafLabs and also community around Arduino made STM32 library for Wiring, programming language which uses Arduino IDE.

The made version of library supported only STM32F103 – it?s common microcontroller which has much SRAM, FLASH, GPIOs and high speed clock instead of ATmega328.

This microcontroller, STM32F103, is used on few boards – Minimum System development boards (called like BluePill and BlackPill (newer)) or development board by LeafLabs called Maple Mini. List of cheap (5 USD) development boards is here

All articles about STM32duino:
STM32duino I. – How to start with STM32 like Arduino
STM32duino II. – control GPIO

STM32duino III. – How to use Serial (USART)
STM32duino IV. – Read temperature and humidity from Si7021 (I2C bus)

STMicroelectronics recognized an increased interest and began to develop own STM32 Arduino library for own development boards called STM32duino. The STM32duino github is available on this link.

At this moment, the STM32duino supports more than twenty types of microcontrollers from STM32 family.

Each type of microcontroller is focused on different field – low power consumption, high performance, much interfaces, acurate timers, acurate ADC/DAC, SRAM, FLASH size and other.

The list of supported STM32 microcontrollers is available on official ST github called STM32duino
https://github.com/stm32duino/Arduino_Core_STM32#boards-available

The STM32 can contain much peripherals – GPIO, UART, SPI, I2C, Timer, ADC, DAC, USB HID which are now supported. STMicroelectronics will updated support of CAN, USB CDC and other.

For these tutorials about STM32duino I will use Nucleo 64 development board with STM32F411 microcontroller.

You can buy it on TME, Farnell

Installation of STM32 package to Arduino IDE

The installation of STM32 package is very easy.

Click to File -> Preferences -> and click to highlighted icon (on the picture below).

Write this link to Additional Boards Manager URLs windows
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

You will see this package in Tools bookmark -> Board -> Boards Manager

After the installation, you will see more options in Tools bookmark.

Choose Nucleo-64 (if you have different development board, write your – Nucleo-32, Nucleo-144, Discovery ) in Board.

Choose the right microcontroller in Board part number

STM32 microcontrollers contains more hardware UARTs, you can choose what Serial interface you will use.

The detailed description of UART will be in the next article.

Some STM32 microcontrollers contain hardware USB interface and here you can choose if you want to use it and how. At this moment, STM32duino doesn’t support all USB classes. Now is supported USB HID.

Nucleo nad Discovery development boards contains programmer/debugger ST-Link/V2-1. If you connect the dev board with this version of STLink, your Operating System alerts you that a new device is connected to your laptop. The behavior of ST-Link/V2-1 is the same like flash disk. It is connected like Mass Storage.

The second way is using ST-Link programmer, it is good way for oldest version of ST-Link or if you don?t have original Nucleo/Discovery board, but you have some supported STM32 and external ST-Link programmer/debugger.

If you have the code for STM32, you can choose what optimalization of code you want.

So, when you connect the Nucleo/Discovery development board, OS shows you a new window with data which is on Mass Storage (STLink v2.1).

Now, we can try if it is working. Let?s blink with LED.

// the setup function runs once when you press reset or power the board

void setup()

{

// initialize digital pin LED_BUILTIN as an output

pinMode(LED_BUILTIN, OUTPUT);

}

// the loop function runs over and over again forever

void loop()

{

digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)

delay(500); // wait for a second

digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW

delay(500); // wait for a second

}

Is it working? Very well. In the next part, we check the UART peripheral.

Do you like this website? Share that and use #STM32duino hashtag.

Share the article:
Show your
Maker soul!
Buy a T-Shirt
Coffee for Chiptron
Give a boost to the next article

Related Articles

The fourth part of STM32duino tutorial we will check the I2C bus. We connect the temperature and humidity sensor Si7021 to default I2C and also to alternative connection of I2C bus. Note: I2C on STM32(G071) was tested on 12.6.2023 with…

The first article about STM32duino described “How to start with STM32 like Arduino. The second article of tutorial describes how to control GPIO – digital input, output and also PWM output. All articles about STM32duino: STM32duino I. – How to…

Welcome to third part of STM32duino tutorial. What do you expect? We check the most popular microcontroller interface – USART, called Serial in Arduino IDE. The STM32 microcontrollers includes a few USART buses. The feature of STM32 is possibility to…

AVR, ATMega, ATTiny, PIC, Arduino… these are very searching words in google and I asked myself “Why?”. Yes, AVR by Atmel or PIC by Microchip family is popular, but we can program better (modern, faster, more low-power, more peripherals) microcontrollers…

If you program microcontrollers by STM (STM32F4, STM32F0, STM32L1) with Standard Peripheral Library your code is bigger than without Standard Peripheral Library. It is motivation why we can program of microcontrollers without Standard Peripheral Library. Nevertheless, if you program without…