STM32F103C8T6 Bare-Metal Hardware Foundation

Power Domain

A 5 V micro-USB conncetor feeds the MIC5219-3. produces a clean 3.3 V rail. A green indicator LED confirms the rail is alive.

USB 5 V ──► LDO 3.3 V ──► VDD, VDDA
                    └──► LED (330 Ω → GND)

Clock Tree

The MCU can boot from three sources:

  • HSI – internal 8 MHz RC, ±1 %
  • HSE – external 8 MHz crystal, ±20 ppm
  • PLL – multiplies HSE to 72 MHz

Typical configuration:

8 MHz HSE ──► HSE ──► PLL×9 ──► SYSCLK 72 MHz
──► AHB 72 MHz
                                                └──► APB1 36 MHz
                                                └──► APB2 72 MHz

Crystal load capacitance: 22 pF on each leg to ground.

Programming Interface

SWD (Serial Wire Debug) is preferred. Only three pins are required:

  • SWDIO (PA13)
  • SWCLK (PA14)
  • nRESET

Add 100 kΩ pull-up on SWDIO and 10 kΩ pull-down on SWCLK for reliability.

Reset Network

nRESET is held high by a 10 kΩ resistor and pulled low by a push-button. A 100 nF capacitor debounces the switch and ensures a clean power-on reset.

3.3 V ──► 10 kΩ ──► nRESET ─┬──► MCU
                            ├──► Push-button → GND
                            └──► 100 nF → GND

Boot Configuration

BOOT1 BOOT0 Source
0 0 Main Flash
0 1 System Memory
1 0 SRAM

Tie both pins to GND through 10 kΩ resitsors for normal flash execution.

Complete Schematic Overview

  1. Power: USB → LDO → MCU + LED
  2. Clock: 8 MHz crystal + with 22 pF caps
  3. Debug: SWD header (3 pins + GND)
  4. Reset: RC network + push-button
  5. Boot: BOOT0/BOOT1 pulled low

All VSS pins grounded; each VDD pair decoupled with 100 nF + 4.7 µF.

Quick Bring-Up Checklist

  • 3.3 V present on VDD/VDDA
  • 8 MHz oscillation on OSC_IN/OUT
  • nRESET idles high, goes low when button pressed
  • SWDIO/SWCLK accessible via header
  • BOOT0/BOOT1 both low

Once the checklist passes, the device is ready for firmware upload and further peripheral expansion.

Tags: STM32 Hardware bare-metal clock power

Posted on Fri, 28 Aug 2026 16:05:50 +0000 by vtolbert