STM32 Clock Configuration Guide: Understanding the Clock System Step-by-Step

Clock configuration is the first thing I verify when bringing up a new STM32-based board. It governs far more than the CPU frequency. UART baud rates, SPI clock speeds, timer periods, ADC conversion timing, and RTOS tick intervals all depend on the clock configuration. A microcontroller may appear to work correctly even with an incorrect

STM32 Clock Configuration Guide: Understanding the Clock System Step-by-Step Read More »

STM32 GPIO Tutorial: Modes, Functions, and Pin Configuration Explained

A GPIO pin may look like one of the simplest peripherals in a microcontroller, but configuring it incorrectly can cause unexpected current consumption, signal-integrity problems, electromagnetic interference (EMI), and even hardware failures. In embedded systems, GPIO configuration is not just about setting a pin HIGH or LOW. Firmware engineers must understand the internal GPIO architecture,

STM32 GPIO Tutorial: Modes, Functions, and Pin Configuration Explained Read More »

Factory Design Pattern in C++

During software/firmware development, one of the most important principles to follow is loose coupling. It is keeping different parts of a system as independent as possible. This allows your codebase to evolve, scale, and adapt to new requirements with minimal friction. One effective way to achieve loose coupling is by abstracting the object creation process.

Factory Design Pattern in C++ Read More »

Singleton Design Pattern

The Singleton Design Pattern is a creational design pattern that ensures a class has only one instance and provides a global point of access to that instance. It is the most controversial Design Pattern because it is violating the “Single Responsibility Principle”. 🤔 Now you might be wondering: How does it violate the Single Responsibility

Singleton Design Pattern Read More »

Virtual Function in C++

In C++, virtual functions are a fundamental part of object-oriented programming that enable runtime polymorphism. This dynamic dispatch mechanism makes virtual functions essential for building flexible, extensible, and modular systems especially in large-scale or hardware-abstracted software architectures. In this article you will learn what is virtual function in C++ and when to use it.  I

Virtual Function in C++ Read More »