Computing stuff tied to the physical world

So many boards, so many µCs

One of the “problems” of a popular µC series such as the STM32F103, is that there are an enormous number of existing boards. Which one to choose, how to pick the “right” one?


For many years, STM have provided their own series of very low-cost development boards, with a range of processors on them. Here’s the low end, and probably oldest “F051”:


The advantage of all these boards is that there’s a second µC on there (at the top above), with USB interface, which acts as JTAG programmer. These “ST-Link” interfaces can be used from STM’s own Windows tools, but there is also a texane/stlink repository on GitHub which can talk to them.

Each ST-Link can be an uploader, serial bridge, and hardware debugger, and the way it’s set up on these “DISCO” and “DISCOVERY” boards, they can be used for other µC’s as well, not just the one on the board. This allows debugging a product once it’s on its own PCB.

There are boards for each chip family produced by STM, i.e. L0’s, F3’s, F7’s, etc.

The one gotcha with these boards, is that the license prohibits using them in commercial products or reselling them. For personal hobby use, that should not be an issue though.


As a next generation after the Discovery boards, STM created a range of “Nucleo” boards, with some very nice properties:

  • there’s still an ST-Link on-board, but it’s a new (compatible) “V2.1” type
  • firmware can also be uploaded by dragging it to the unit, connected as USB stick
  • all the Nucleo boards have the same shape, layout, and dimensions
  • all boards include Arduino shield-compatible headers
  • all signals are available on pins, located in the same place on all boards
  • many solder jumpers are present (some open, some closed) to adjust pin features

As with some of the Discovery boards, there is a slight inconvenience:

  • none of the boards have a crystal installed, they can only run off internal 8 MHz RC
  • but they can use the PLL to run up to at least 64 MHz, and a crystal can be added

One of the most impressive low-level properties of the Nucleo boards is that they all have the same LQFP-64 package for the µC, and thus demonstrate that even at the hardware chip level several of these variations are nearly 100% compatible:


These Nucleo boards come with the same caveat as the Discovery boards from STM.

One nice property is that there are so many different µC versions of them, yet they all work the same, they have the same physical layout, and they all support Arduino shields (more or less, it will depend on pin use as to whether everything works well). This means that you can start out with one Nucleo board, such as the F103RB, and if it’s not capable or fast enough, or doesn’t have the right features, you can easily swap it out for a different model.


The European Olimex company has been offering a range of STM32-based boards for quite some time (as well as many other brands, including AVR and PIC). One of the more interesting ones is this STM32F103RB unit, called the Olimexino-STM32:


It includes a switching regulator to run off a wide range of supply voltages, a µSD card slot (on the bottom), a LiPo charger + jack, a CAN bus connector, an extension port for their own extensive range of UEXT modules, and as you can see, headers to accommodate Arduino-compatible shields.

Olimex supports open source, and they release all the schematics and (!) board design files for their products. Good docs, links to various bits of software for their boards, it’s really a very nice option – and there’s no licensing mess…


LeafLabs used to sell some very nice STM32F103-based boards, such as the Maple, and then later the Maple Mini:

11280 01c

These boards are no longer being produced, but the site with extensive wiki and a (now closed) forum remains there for reference.

But… there’s a way out!


For some time now, there have been a large range of complete STM32-based boards for sale on eBay. Mostly from China. The prices run from under $5 to $30 each, and the range and variety of these boards is truly staggering. Including Maple Mini boards!

Things can change quickly in eBay-land, so your best bet is to simply go over and search for terms such as “STM32F103”, or to narrow it down further to “STM32F103RB” for example.

At the prices charged, and with the free worldwide delivery offered on many of these boards, one has to wonder how this is possible. In some cases, the total cost is in fact lower than the price of the individual electronic components – not to mention production costs!

Some come with a CD with lots of English + Chinese documentation and software on it, others come as is. But that’s not necessarily an issue: the µC itself and its pinout is well-known, and the boards do tend to have good silk screen labels on them.

Maybe the board will be lower quality. Maybe it’s out of spec. Maybe they are rejects. Maybe there’s an occasional rip-off. But the reality is that they usually work just fine.


There are several Asian vendors offering low-cost µC development boards which are not always found on eBay. One of them is Haoyu Electronics (yes, the site is “”).

There’s one very interesting board in their collection which is extremely low-cost, and quite small and convenient to use:

DSC 5210

It’s called the HT-TinySTM103T and it costs ≈ $5, including untracked airmail shipping.

This board contains an STM32F103-type µC like any other, but the “STM32F103TB” chip is a smaller 36-pin package with just a tad less hardware peripherals. This still has 128 KB of flash memory and 20 KB of RAM, which is plenty to store quite a large amount of code. That’s still four times the memory on an ATmega328, for example.

We’re going to use this board in the coming series of examples, but note that it’s just one of the many options out there. Any board with the same µC on it will be compatible, or usable with just a quick re-compile. All the peripherals and capabilities are the same.

Lastly, to give you an idea of the features available on the same F103, but as high-end “ZE”:

DSC 5211

This µC has 512 KB flash and 96 KB RAM, but this board also adds up to 8 MByte SRAM, 16 MB NOR flash, and 128 MB of NAND flash. This memory ends up in the same address space as the built-in memory, so data and code can reside there, and code can actually execute directly out of SRAM and NOR flash. All on a 46×85 mm board, for about the same price as an original Arduino. Sure, today’s mobile phones pack more punch, but still!

[Back to article index]