In STM32 microcontrollers, FMC stands for Flexible Memory Controller.
It’s a hardware peripheral that allows the MCU to interface efficiently with external memories and devices—especially those that use parallel buses.
The FMC provides a high-speed, flexible interface between the STM32 and external memory such as:
Depending on the STM32 series, the FMC supports:
Once configured, external memories connected via FMC are mapped into the MCU’s address space.
That means you can access external memory just like internal memory, e.g.:
uint16_t *ext_sram = (uint16_t *)0x60000000; // Example FMC Bank1 base
ext_sram[0] = 0x1234; // Writes directly to external SRAM
Present on high-performance STM32 families:
On smaller or simpler STM32s, it may be replaced by a FSMC (Flexible Static Memory Controller), which is a predecessor of FMC with fewer features.