Side project · a tool, not a product

STM32F407 Memory Map Explorer

This is a personal tool. I build my own firmware for the boards I design, and bare-metal STM32 work means living inside a reference manual where the memory map, the register tables and the clock-enable bits are hundreds of pages apart. So I built the version I wanted: the whole 4 GB Cortex-M4 address space as one expandable tree, with the registers, the bus each peripheral sits on, and the calculators I kept re-doing on paper.

It lives on this site because firmware-aware layout is a large part of what I actually sell. Knowing which pin can be an ADC input, which peripherals share a bus, and what the chip reads at boot is what decides where parts go on the board — and the difference between a schematic that routes cleanly and one that fights you.

  • Address calculatorpaste any hex address, get region, bus, peripheral and register
  • Bit-band calculatorsSRAM and peripheral aliases, both directions
  • Baud-rate calculatorUSART BRR mantissa / fraction, with the error percentage
  • Register viewsoffsets and one-line meanings, per peripheral
  • Clock pathsHSI → PLL → SYSCLK → bus, and the RCC enable bit each block needs
  • Search, bookmarks, minimapfor finding your way back to the block you were on

Targets the STM32F407VGT6 as fitted to the Discovery board; addresses and register offsets are taken from ST’s RM0090 reference manual. Blocks tagged DISC are the ones actually wired on that board. The colour coding is functional — each bus family keeps its own hue — so it does not follow the rest of the site’s palette, only its background.

STM32F407VGT6Memory Map Explorer

ARM Cortex-M4 — 4 GB Address Space

The processor sees everything as addresses in one flat 4 GB space.
▶
0x00000000–0x1FFFFFFF
Code RegionICode + DCode☆
Flash, boot ROM, vector table
512 MB
▶
0x20000000–0x3FFFFFFF
SRAM RegionSystem bus☆
Working memory, stack, heap, variables
512 MB
▶
0x40000000–0x5FFFFFFF
Peripheral RegionSystem busXN☆
GPIO, timers, UART, SPI, I2C, ADC…
512 MB
0x60000000–0x9FFFFFFF
External RAMSystem bus☆
On STM32F4: addressable via FSMC (Flexible Static Memory Controller) as banks 1–4 for off-chip NOR/PSRAM/NAND/PCCARD. Discovery board: no external memory chips connected, so no usable storage here.
1 GB
▶
0xA0000000–0xDFFFFFFF
External DeviceSystem busXN☆
Starts with FSMC control registers (AHB3) at 0xA0000000. Rest unused on Discovery board.
1 GB
▶
0xE0000000–0xE00FFFFF
Private Peripheral BusPPBXN☆
ARM core peripherals: NVIC, SysTick, SCB (operational); ITM, DWT, FPB, TPIU, ETM, Core Debug, ROM Table (debug/trace).
1 MB
0xE0100000–0xFFFFFFFF
Vendor-specificSystem bus☆
Not used
511 MB
LEGEND
▶ Click to expandXN = Execute NeverDISC = Wired on Discovery board🔑 = RCC clock enable bit☆ = BookmarkHover 350ms = peek inside
MAP
CODE
SRAM
PERI
EXTE
EXTE
PRIV
VEND

Best on a wide screen — it is a memory map, and memory maps are wide.