Workshop: Bare-metal STM32 microcontroller programming with Ada

As a system programming language, Ada has been used for programming microcontrollers since 1983. Despite the massive increase in performance of MCUs since the 1980s, they are still very easy to program with today's version of Ada.

In this workshop we'll be taking a look at the STM32 range of ARM Cortex-M MCUs, and how they can be programmed both with C++ and Ada. This allows one to observe how the same low-level concepts translate between these two popular languages, while making it easy for C++ developers to grasp the Ada way.

Over the course of two days we will look at setting up the necessary toolchain and development environment, working our way towards setting
up and flashing an STM32 development board using first a 'Blinky' example in Ada before moving on to more complicated concepts and STM32 peripherals, like the timers and USB & Ethernet ones.

This course does require at least some advanced knowledge of C++, with Ada knowledge welcome, but not required. Having access to an STM32 development board like the Nucleo or Discovery boards is necessary to run the examples on real hardware, but not required to follow along.

The course will use the Nucleo-F042K6 and NucleoF746ZG boards as examples.