Skip to Content
  • How to Use C++ with STM32CubeIDE

    How to Use C++ with STM32CubeIDE

    While C may be the preferred language of many embedded programmers, C++ does have a place, especially if you want to use certain libraries, like TensorFlow Lite for Microcontrollers. In this tutorial, I will show you how to get started making a program (blinky) for an STM32 microcontroller using C++ on STM32CubeIDE. I will use…

    Read more


  • How to Create a Web Server (with WebSockets) Using an ESP32 in Arduino

    How to Create a Web Server (with WebSockets) Using an ESP32 in Arduino

    A few months ago, I created a video showing how to use WebSockets with an ESP32. WebSockets have proven to be very fast (relatively speaking) at controlling hardware over WiFi. They still rely on TCP, but they have little overhead, so the latency is much less than other methods (e.g. using separate web pages). However,…

    Read more


  • How to Use printf on STM32

    How to Use printf on STM32

    By default, most microcontrollers have no concept of a console, so you have to help them out a bit. When it comes to debugging, outputting information to some kind of console can be extremely useful. One option is to use semihosting with STM32CubeIDE. However, semihosting can be extremely slow. Another good option is to output…

    Read more


  • How to Use Semihosting with STM32

    How to Use Semihosting with STM32

    Semihosting is a debugging tool that is built in to most ARM-based microcontrollers. It allows you to use input and output functions on a host computer that get forwarded to your microcontroller over a hardware debugging tool (e.g. ST-LINK). Specifically, it allows you to use printf() debugging to output strings to your IDE’s console while…

    Read more


  • Getting Started with STM32 Nucleo USB (Virtual Com Port)

    Getting Started with STM32 Nucleo USB (Virtual Com Port)

    As I continue my journey with STM32 development, I wanted to share my findings with how to get a Virtual COM Port (VCP) working with a Nucleo board. Specifically, I’m using the Nucleo-F042K6, as it has a built-in USB device peripheral (full speed), and it does not require an external crystal. I highly recommend looking…

    Read more