C++20 for bare-metal microcontroller programming

This page summarizes the projects mentioned and recommended in the original post on /r/cpp

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • msp432-cpp

    MSP432 Buildsystem without any standard-libs written completely in C++ 20

    Link to the repository: https://github.com/lebakassemmerl/msp432-cpp

  • Kvasir

    C++ Metaprogramming library enabling better static checking and register abstraction in embedded software

    You’re way ahead of me, but I wanted to mention that it reminded me of this: https://github.com/kvasir-io/Kvasir

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • Tuna-i3-Plus

    This is a modified version of the Marlin 1.1.2 firmware for the WANHAO Duplicator i3 Plus 3d printer.

  • mdrivlib

    Embedded driver library using modern C++. Currently supports STM32MP1, STM32H7, STM32F7, STM32F4 and STM32F0

    Being able to mark a register RW vs RO vs WO and have the compiler check your access is great. Have you also considered the case where a register bit is cleared by writing a 1 to it (or to another register)? I've also implemented my own approach for a general register class (bits and pieces stolen from various other projects): https://github.com/4ms/mdrivlib/blob/main/drivers/register_access.hh I use types for registers, rather than structs, which lets me do RegisterSetClear to handle the case where different registers set and clear a bit.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts