Author name: Amlendra

I am an embedded c software engineer and a corporate trainer, currently, I am working as senior software engineer in a largest Software consulting company . I have working experience of different microcontrollers (stm32, LPC, PIC AVR and 8051), drivers (USB and virtual com-port), POS device (VeriFone) and payment gateway (global and first data).

Understanding MSP vs PSP in ARM Cortex-M

In ARM Cortex-M architectures such as Cortex-M3, Cortex-M4, Cortex-M7, and Cortex-M33, stack management is a fundamental mechanism that enables exception handling, context switching, and real-time operating system (RTOS) operation. One of the unique features of the ARM Cortex-M core is its support for two independent stack pointers: the Main Stack Pointer (MSP) and the Process

Understanding MSP vs PSP in ARM Cortex-M Read More »

SPI Timing Understanding: Master SS Idleness and Inter-Data Delay Explained

In SPI protocol design, timing between control and data signals plays a crucial role in reliable communication, especially in multi-slave, high-speed, or sensitive analog peripheral systems. Two often overlooked but critical timing parameters are: Master SS Idleness Inter-Data Idleness These parameters are available in modern SPI controllers and are vital for ensuring proper synchronization between

SPI Timing Understanding: Master SS Idleness and Inter-Data Delay Explained Read More »

How the IAR Linker Resolves Function Calls Across Files in ARM Cortex-M

In embedded systems — especially with microcontrollers like the STM32H5 (Cortex-M33) — linking is not just a toolchain step. It represents the final integration point where independently compiled code modules, memory layout constraints, and hardware-specific expectations converge into a working binary. Yet, many engineers treat the linker as a black box — something that “just

How the IAR Linker Resolves Function Calls Across Files in ARM Cortex-M Read More »

How the ARM Function Call Stack Frame Works (With C & Assembly Examples)

When writing low-level embedded C code for ARM Cortex-M, understanding the ARM function call stack frame is essential for analyzing memory usage, optimizing performance, and debugging hard faults. This post dives deep into the ARM calling conventions, stack frame setup, and the distinction between caller-saved and callee-saved registers — all through practical examples. ARM Cortex-M

How the ARM Function Call Stack Frame Works (With C & Assembly Examples) Read More »

Common RTC Issues in Embedded Systems (STM32) and How to Solve Them

When integrating a Real-Time Clock (RTC) into embedded systems, especially in ultra-low-power or time-critical applications, some issues may not become apparent until after deployment. These issues can result in unexpected behavior, data loss, or inaccurate timekeeping. Below is a comprehensive list of real-world RTC challenges commonly faced by developers and product teams, particularly when working

Common RTC Issues in Embedded Systems (STM32) and How to Solve Them Read More »

How to Generate Clock Output (MCO1/MCO2) on STM32H573

In embedded systems, sharing clock signals externally is often essential for synchronizing peripherals or other microcontrollers. Most of the popular Microcontrollers often need to share their internal clock signals with external components. The STM32H573 supports this via Microcontroller Clock Outputs (MCO) on two GPIO pins: PA8 (MCO1) and PC9 (MCO2). Whether you’re debugging clock issues or

How to Generate Clock Output (MCO1/MCO2) on STM32H573 Read More »