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.

Also, looks sexay behind some black glass

Needless to say, the applications of displays on microcontrollers aren’t limited to “printf-based debugging”. Such displays can also be part of your application’s user interface.

In this section, which is part of the larger STM32 section, I’ll be focusing on display modules which are best suited for use with STM32 devices. It’s not an intuitive criterion, sometimes I even need to work on a display for several days before I decide it’s not a good fit. What makes a display a good fit for STM32 ?

First, it needs to have a physical interface that the microcontroller can connect to. Your typical LCD display salvaged from a defunct laptop may have cost you nothing, but it only talks 18-bit LVDS… a very demanding interface that no STM32 carries.

Second, it must require as little resources as possible. If all your STM32 has time and RAM for is driving the display, then it’s pointless.

Third, it needs to be easy to program. Or rather, efficient. If a display uses an esoteric data format such as 6 bits or its endianness doesn’t match that of your microcontroller, just walk away : you don’t want to be wasting cycles changing the order of bits for every single pixel you want to display. Life is too short.

Ideally, a display must support burst transfers. This will allow you to exploit the STM32’s DMA controllers to refresh your display without wasting any of your precious clock cycles. This is especially important if you’re using a display in a real-time application.

With all that in mind, I hope you’ll understand if this section has few entries. At least they are great ones.