Modern C++ Embedded Framework for STM32 Microcontrollers
EmbeddedCore is a lightweight embedded framework written in modern C++20 designed for STM32 microcontrollers. The project focuses on clean architecture, hardware abstraction, event-driven communication, and testability.
The goal of the project is to provide reusable building blocks for embedded applications while demonstrating modern C++ techniques commonly used in professional firmware development.
- Event Queue
- Logger
- Scheduler
- Hardware Abstraction Layer (HAL Wrappers)
- GPIO Driver
- LED Driver
- UART Driver
- Modern C++20
- Unit Testing Support
- CMake Build System
- Modular Architecture
- Platform Independent Core Logic
Application
│
▼
Event Queue
│
▼
Drivers Layer
│
▼
STM32 HAL
│
▼
Hardware
The application communicates through events rather than direct dependencies between modules.
Led statusLed(GPIOA, GPIO_PIN_5);
statusLed.on();
Logger::info("System started");
eventQueue.push(ButtonPressed{});EmbeddedCore/
│
├── app/
│ └── main.cpp
│
├── core/
│ ├── EventQueue.hpp
│ ├── Logger.hpp
│ └── Scheduler.hpp
│
├── drivers/
│ ├── Gpio.hpp
│ ├── Led.hpp
│ └── Uart.hpp
│
├── tests/
│
├── docs/
│
└── CMakeLists.txt
- GPIO abstraction
- LED driver
- UART wrapper
- Event Queue
- Logger
- Scheduler
- Unit Tests
- FreeRTOS Integration
- SPI Driver
- I2C Driver
mkdir build
cd build
cmake ..
cmake --build .- Scheduler
- State Machine Module
- Dependency Injection
- FreeRTOS Integration
- Message Bus
- Software Timers
- SPI Driver
- I2C Driver
- DMA Support
- Complete Embedded Framework
- Documentation
- Unit Test Coverage > 80%
- CI/CD Pipeline
This project is part of my embedded software engineering portfolio and serves as a playground for experimenting with firmware architecture, embedded design patterns, and modern C++ development practices.