Developing with STM32 introducing ChibiStudio

How to start


Hello you, and welcome on PLAY Embedded. If you are reading this, most likely this is the very first time for you here. This small guide will explain to you how to better navigate PLAY Embedded, find what you are looking for and interact with Editors to ask support or specific articles.

Approaching STM32 and ChibiOS

Why should I?

STM32 is the largest family of microcontroller based on ARM Cortex-M architecture. Nowadays this architecture has become an industry standard and it is a must know for an embedded developer. What it is better than STM32? Hard to say because this family of microcontrollers has grown quite rapidly in the latest years offering a lot of degrees of freedom and a well-designed set of internal peripherals.

The ARM Cortex architecture is designed for embedded applications and has some internal mechanisms that make it optimized for power consumption still keeping good performances. Some of these mechanisms are designed to perform Operating System context switch more efficiently: they are designed to run a Real-Time Operating System.

Talking of optimization, design, extensibility there is nothing better than ChibiOS. This RTOS is designed for performance, quick context switch, low power and extremely small code footprint. It even offers a Hardware Abstraction Layer that allows you to port applications from a microcontroller to another with ease.

Developing with STM32 introducing ChibiStudio
Developing with STM32 introducing ChibiStudio

So what is the best way to learn how to use a STM32 with proficiency?

In this blog, there are three categories you should keep watching and follow if you are interested in STM32 or ChibiOS:

  • Basic Knowledge which contains some articles about embedded systems and programming in general. These articles contain information you most likely will need soon or later.
  • ChibiOS and STM32 which contains a large amount of article related to STM32 and ChibiOS. The aim of this section is to help inexperienced users to get started with STM32 using a ready to use IDE for Windows and providing an example, exercises and libraries for external peripherals.
  • Advanced Knowledge which contains some articles about specific advanced topics very useful to extend your own knowledge on specific topics.

These sections are continuously extended with new articles often based on user feedback: your interaction could be the driver for a new article.

ChibiOS and STM32
A screenshot of the sub-menu ChibiOS and STM32

In case you are new to STM32 or to ChibiOS we have designed a specific path which would help you to get started with this stuff.

You can notice that the category ChibiOS and STM32 has sub-categories. In a first moment you should concentrate your attention to two categories:

  • Getting Started which contains a series of articles which are meant to be tutorials and should be read in a subsequent way.
  • Examples and exercises which contains a series of examples and exercises as integration to our tutorial.

At the moment, we are extending these two sections adding new articles in the Getting started section. The idea is to have at least an article for each peripheral of the STM32 and a related set of examples and exercises.

So where do I start?

This is not something you will get in a day or a couple of hour. It would require weeks or months but at list there is a well defined training.

Step 1: the overview

First of all, you should take an overview of the STM32 family and install the STLink drivers. So let’s start from this article: From 0 to STM32. At the end of this article, you will:

  • have an overview of how is organized STM32 ecosystem,
  • know which development board are available and which is the best for you,
  • also know how to install drivers for the STLink, the embedded debugger offered for free by STM32 development kits.
Development system diagram
A diagram of the development system composed of ChibiStudio + an STM32 based development board

Now you are ready to move forward and take a look to ChibiStudio, a ready to use a working environment for firmware development in Windows. This is explained in the article Developing on STM32: introducing ChibiStudio. At the end of this article, you will:

  • have an overview of ChibiStudio,
  • know how are organized demos in ChibiStudio,
  • have installed the toolchain on your PC,
  • be able to do the basic operation with the toolchain (i.e. import demos, create a new project, flash and run the firmware, do basic stuff with the debugger).

To complete the first step, there is another article: A close look to ChibiOS demos for STM32. At the end of this article, you will:

  • have detailed knowledge about how a ChibiOS demo is organized,
  • be able to launch the ChibiOS test suite,
  • master ChibiOS configuration files.

Step 2: first interactions with the external world

The principle diagram of a Pad

Now that you are able to handle and interact with the development environment we can move to the next step. Here we are going to see how to interact with the external world moving our first steps with Input\Output controller. This involves a new tutorial: Using STM32’s GPIO with ChibiOS’ PAL Driver. By the end of this article you will:

  • know how GPIO peripheral is organized, its various operating modes and which registers are involved in the GPIO configuration,
  • have an overview of the PAL driver that allows interacting with GPIO with ease,
  • have a look to PAL APIs and their common usage,
  • know how to toggle an output PIN, read an input PIN, how to configure the PIN mode,
  • be able to reroute internal peripherals through the GPIO Alternate Functions.

To complete this step there are some examples that you should look. These articles are thought to provide you with some code snippet to deal with the most common use cases. The suggested articles are:

Step 3: first interaction with communication peripherals

Using STM32′ USART with ChibiOS Serial Driver

This step is important to understand how communication peripherals work and to do something a little bit more complex that toggling a PIN. First of all, you should read the article Using STM32′ USART with ChibiOS Serial Driver, to understand how to deal with STM32 Universal Synchronous\Asynchronous Receiver Transmitter to implement an RS-232 using the ChibiOS Serial driver. This article gives you even an overview of communication protocols highlighting differences between serial and parallel protocols.

Even here we have some suggested examples. Up to know there is only one article but more are coming. Printing strings on a Virtual COM port with an STM32 and ChibiOS is a hands-on STM32 USART with the ChibiOS Serial Driver that explain to you how to use chprintf() to print formatted strings on a terminal.

Step 4: up to you

The next step depends on what is your goal. We have here some additional article that explains how to deal with other STM32 peripherals and related ChibiOS driver.

Detecting obstacles using an ultrasonic sensor HC-SR04
Detecting obstacles using an ultrasonic sensor HC-SR04

Further notes

We are adding articles day by day and reviewing the old one. Keep an eye on PLAY Embedded if you are interested in these topics. The best way is to follow our facebook page where we usually share our new articles (we try to publish only when necessary without annoying you).

We try to keep the quality as high as possible: if you find errors, or you have suggestions, or you would like to read about something specific, your feedback is highly appreciated. If you want to interact with us you can use the contact form or the facebook chat. If you want to interact with us on regular basis we suggest you subscribe our official forum ( which is the best place to start discussions and also the right place to ask new articles or contribute with feedback or error reporting.