Bare metal ARM programming

I've been working with ARM Cortex based boards over the past while. One of these is the STM32F0Discovery board from ST Microelectronics. This is a great little board for getting to know arm based microcontrollers and it is very cheap. Lots of the ARM Cortex documentation talks about the CMSIS specification and various board support libraries. I believe these have their place however I have found that undergraduate engineers feel more at home twiddling bits in registers than working with a complex API. I have therefore taken a "bare-metal" approach to programming the STM32F0Discovery board as well as other devices. Details are here:

Bare metal programming on various ARM Cortex targets

    STM32F0Discovery and STM32VLDiscovery
    TILM4F120 (Tiva C Launchpad)
    MicroRealms game on the LPC810
    A smart magnetometer using the LPC810
    Infineon XMC2Go
    Programming the STM32F030F4 TSSOP20 microcontroller using ISP
    Programming the STM32F042 Nucleo board from the ground up
    Programming the STM32F303 Nucleo board from the ground up
    Programming the STM32L011 Nucleo board from the ground up
    Programming the STM32L476 Discovery board from the ground up
    Programming the STM32L432 nucleo board from the ground up

Up to date header files

You can get updated header files for the various targets here. Some of these updates fix bugs in the various definitions, others include additional peripheral definitions that were not in the original release. Please feel free to mail me suggested improvements at .


My entry into the LPC810Simplicity challenge. Details are here

Older stuff

Working with the str9-comstick on 64 bit Ubuntu
The following documents relate to the EP9302 development board sold by (amongst others) Olimex
The EP9302 boot process
General purpose I/O on the EP9302

Back to my start page