The STM Shell – pronounced stem shell because I like a good pun – is a minimalistic library that provides a customizable command line interface (CLI) to your STM32 projects.
New ! USB Hardware Configuration
The Linux USB gadget API is built on a stack of two drivers : the “actual” USB driver for the physical USB interface of the Pi, and a sort of “middleware” driver (gadget driver) that implements the behavior of a USB device.
New ! Raspberry Pi USB OTG Primer
This first page contains background information that you may or may not need. Remember the Dunning-Kruger effect, though : maybe you think you know, but do you really ? Read-on, just to make sure. You do not want to Dunning-Kruger.
New ! USB Gadget Modes
All variants of the Raspberry Pi Zero feature two Micro-B USB sockets, one that carries no data (“PWR IN”, for powering the Pi) and a second one labeled “USB”. Most Zero users I’ve met find that “USB” port annoying because it requires using a special cable in order to turn it into a regular USB host port.
New ! Vanilla Headless Setup 2
Recently, the Raspberry Pi Foundation introduced a new tool, the Raspberry Pi Imager. This page documents how to use it to achieve the exact same setup as could be obtained before, using the procedure on my first Vanilla Headless Setup page. You don’t need to read it, the prose is pretty much the same except for the technical details. I kinda worn-out the copy and paste shortcut keys.
New ! CDC : Revengeance
This page is a collection of interesting information about the USB CDC library and mythe VCP library I built on top of it. Check it out once in a while, it’s probably going to grow every time I work with a new STM32 family, find a bug or add a feature.
New ! Hardware Design
The high-orbit view of the ESRB is this simple diagram :
Update : Creating a Cube Project
So you’ve installed STM32CubeIDE (a.k.a. “Cube” or “the IDE”) and you’ve got a board with an STM32 on it. Time to get coding ! This page about setting up a project : the project itself is unimportant, so we’ll go with blinking an LED. That’s the “Hello World” of the microcontroller world.
Update : Displays
Of all the things you can program, microcontrollers are the least friendly. They have no interface that a human can use. That is regrettable, especially when trying to get some feedback from your code during development. A simple LED connected to an I/O pin can already be used to provide a lot of feedback with very little hardware (and code) but it’s a very limited option. Luckily, there are lots of inexpensive display modules out there than can do a lot more than turn on and off. They do require significantly more code to operate, however. Let me help you with that.
Update : Libraries
This section documents my public STM32 libraries. If it’s in here, it can be used on any STM32 device that has the relevant peripherals.