<h1>STM32F103C8T6 vs STM32F407VET6 — Which Cortex-M3 or M4 MCU Should You Pick?</h1>
<div class="intro">
<p>Both are STMicroelectronics ARM MCUs, but they target completely different jobs:</p>
<ul>
<li><strong>Need a cheap, simple MCU for a sensor node or motor control?</strong> → STM32F103C8T6. It's $2–3, 72 MHz, 64 KB Flash, 20 KB SRAM, and it's the most documented MCU on earth.</li>
<li><strong>Need real processing power — FPU, DSP, Ethernet, large memory?</strong> → STM32F407VET6. 168 MHz Cortex-M4F with hardware float, 512 KB Flash, 192 KB SRAM, Ethernet MAC, dual CAN, dual USB.</li>
</ul>
<p>The price difference is about 3–5×, but the capability gap is more like 10×. The question is: do you <em>need</em> that capability, or is it overkill?</p>
</div>
<h2>At a Glance</h2>
<table>
<thead><tr><th>Parameter</th><th>STM32F103C8T6</th><th>STM32F407VET6</th><th>Winner</th></tr></thead>
<tbody>
<tr><td><strong>Core</strong></td><td>Cortex-M3</td><td>Cortex-M4F with FPU</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Max Frequency</strong></td><td>72 MHz</td><td>168 MHz</td><td><strong>F407</strong> (2.3×)</td></tr>
<tr><td><strong>DMIPS</strong></td><td>~90</td><td>~210</td><td><strong>F407</strong> (2.3×)</td></tr>
<tr><td><strong>FPU</strong></td><td>❌ Software float</td><td>✅ IEEE 754 single-precision</td><td><strong>F407</strong></td></tr>
<tr><td><strong>DSP Instructions</strong></td><td>❌</td><td>✅ SIMD, MAC, saturating</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Flash</strong></td><td>64 KB</td><td>512 KB</td><td><strong>F407</strong> (8×)</td></tr>
<tr><td><strong>SRAM</strong></td><td>20 KB</td><td>192 KB (incl. 64 KB CCM)</td><td><strong>F407</strong> (9.6×)</td></tr>
<tr><td><strong>External Memory</strong></td><td>❌</td><td>✅ FSMC (SRAM/NOR/NAND)</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Package</strong></td><td>LQFP-48 (7×7 mm)</td><td>LQFP-100 (14×14 mm)</td><td>—</td></tr>
<tr><td><strong>GPIOs</strong></td><td>37</td><td>82</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Ethernet MAC</strong></td><td>❌</td><td>✅ 10/100 Mbps</td><td><strong>F407</strong></td></tr>
<tr><td><strong>USB</strong></td><td>1× FS Device</td><td>2× OTG (FS + HS)</td><td><strong>F407</strong></td></tr>
<tr><td><strong>CAN</strong></td><td>1</td><td>2</td><td><strong>F407</strong></td></tr>
<tr><td><strong>USART/UART</strong></td><td>3</td><td>6</td><td><strong>F407</strong></td></tr>
<tr><td><strong>SPI</strong></td><td>2 (18 Mbit/s)</td><td>3 (42 Mbit/s)</td><td><strong>F407</strong></td></tr>
<tr><td><strong>I²C</strong></td><td>2</td><td>3</td><td><strong>F407</strong></td></tr>
<tr><td><strong>ADC</strong></td><td>2× 12-bit, 1 MSPS</td><td>3× 12-bit, 2.4 MSPS</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Timers</strong></td><td>7</td><td>17 (incl. 2× 32-bit)</td><td><strong>F407</strong></td></tr>
<tr><td><strong>DMA Channels</strong></td><td>7</td><td>16 (with FIFO + burst)</td><td><strong>F407</strong></td></tr>
<tr><td><strong>Supply Voltage</strong></td><td>2.0V to 3.6V</td><td>1.8V to 3.6V</td><td><strong>F103</strong> (wider)</td></tr>
<tr><td><strong>Typical Price (1K+)</strong></td><td><strong>~$2–3</strong></td><td>~$8–12</td><td><strong>F103</strong> (4× cheaper)</td></tr>
<tr><td><strong>Active Power</strong></td><td>~50 mA</td><td>~100 mA</td><td><strong>F103</strong></td></tr>
</tbody>
</table>
<p>The F407 wins on almost every spec. But specs aren't everything — the F103 wins on price, power, package size, and ease of use. The right choice depends on what you're building.</p>
<h2>Core Architecture: Cortex-M3 vs Cortex-M4F</h2>
<p>This is the biggest difference. The Cortex-M3 is a pure integer processor. The Cortex-M4F adds a floating-point unit and DSP extensions.</p>
<p><strong>What the FPU means in practice:</strong></p>
<p>If your code does any floating-point math — PID control with non-integer gains, FFT for vibration analysis, sensor fusion (Mahony/Madgwick filters), audio processing — the F407 finishes those calculations in hardware, 5–10× faster than the F103's software emulation.</p>
<p>A concrete example: a 256-point FFT using CMSIS-DSP takes roughly 0.2 ms on the F407 (with FPU + DSP SIMD) vs about 2 ms on the F103 (integer-only, software float). That's the difference between real-time audio analysis and "process it when you can."</p>
<p><strong>When you don't care about FPU:</strong></p>
<p>If your code is mainly logic (read sensor → do integer math → toggle GPIO → send UART), the FPU sits idle. The F103 at 72 MHz runs integer code about 43% as fast as the F407 at 168 MHz — but 43% is often enough. For a temperature logger, a simple motor controller, or a Modbus bridge, the F103 does the job at a fraction of the cost.</p>
<h2>Memory: 64 KB vs 512 KB Flash</h2>
<p>The F407 has 8× more Flash and nearly 10× more SRAM. But the real question is: how much do you actually need?</p>
<p><strong>F103 memory budget (64 KB Flash / 20 KB SRAM):</strong></p>
<table>
<thead><tr><th>Component</th><th>Flash</th><th>SRAM</th></tr></thead>
<tbody>
<tr><td>FreeRTOS kernel</td><td>~8 KB</td><td>~1 KB + stack</td></tr>
<tr><td>USB Virtual COM</td><td>~6 KB</td><td>~2 KB</td></tr>
<tr><td>CANopen stack</td><td>~10 KB</td><td>~4 KB</td></tr>
<tr><td>Application logic</td><td>~30 KB</td><td>~8 KB</td></tr>
<tr><td><strong>Remaining</strong></td><td><strong>~10 KB</strong></td><td><strong>~5 KB</strong></td></tr>
</tbody>
</table>
<p>That's tight. Your firmware has to be lean. No fat libraries, no unnecessary abstraction layers.</p>
<p><strong>F407 memory budget (512 KB Flash / 192 KB SRAM):</strong></p>
<table>
<thead><tr><th>Component</th><th>Flash</th><th>SRAM</th></tr></thead>
<tbody>
<tr><td>FreeRTOS + LWIP (TCP/IP)</td><td>~80 KB</td><td>~40 KB</td></tr>
<tr><td>mbedTLS (TLS)</td><td>~60 KB</td><td>~20 KB</td></tr>
<tr><td>USB Host stack</td><td>~20 KB</td><td>~10 KB</td></tr>
<tr><td>FatFS + SDIO driver</td><td>~15 KB</td><td>~8 KB</td></tr>
<tr><td>TouchGFX GUI framework</td><td>~100 KB</td><td>~50 KB</td></tr>
<tr><td>Application logic</td><td>~100 KB</td><td>~40 KB</td></tr>
<tr><td><strong>Remaining</strong></td><td><strong>~137 KB</strong></td><td><strong>~24 KB</strong></td></tr>
</tbody>
</table>
<p>Room to breathe. You can use HAL, middleware, and still have space left.</p>
<p><strong>Bottom line:</strong> If you can fit your code in 64 KB, you don't need the F407. If you can't, you don't have a choice.</p>
<h2>Peripherals That Matter</h2>
<h3>Ethernet MAC</h3>
<p>The F407 has it; the F103 doesn't. This is often the deciding factor. If your product needs Ethernet (Modbus TCP, HTTP, MQTT), the F407 does it directly with an external PHY chip ($1–2). The F103 would need an external W5500 or ENC28J60 Ethernet controller — more chips, more cost, more PCB space.</p>
<h3>Dual CAN</h3>
<p>F103 has one CAN 2.0B — fine for a simple CANopen node. F407 has two, which lets it act as a CAN gateway between two separate bus segments. If you're building automotive or industrial gateways, this matters.</p>
<h3>USB OTG</h3>
<p>F103 has USB 2.0 FS device only. F407 has two USB OTG ports: one FS (on-chip PHY) and one HS (external ULPI). This means the F407 can act as USB host (connect keyboard, mouse, flash drive) while also appearing as a device to a PC.</p>
<h3>Camera Interface (DCMI)</h3>
<p>F407 has a parallel camera interface that captures 8–14 bit video at up to 54 MB/s. Combined with external SRAM via FSMC, it can grab VGA frames for basic machine vision. The F103 has nothing close.</p>
<h2>Package and Pin Count</h2>
<table>
<thead><tr><th></th><th>F103C8T6</th><th>F407VET6</th></tr></thead>
<tbody>
<tr><td>Pins</td><td>48</td><td>100</td></tr>
<tr><td>Package</td><td>LQFP-48 (7×7 mm)</td><td>LQFP-100 (14×14 mm)</td></tr>
<tr><td>GPIOs</td><td>37</td><td>82</td></tr>
</tbody>
</table>
<p>The F103 fits in tight spaces. But 37 GPIOs disappear fast — UART + SPI + I²C + a few buttons and LEDs and you're out. The F407's 82 GPIOs give you room for a parallel LCD, keypad matrix, external memory bus, and still have pins left.</p>
<h2>Power Consumption</h2>
<table>
<thead><tr><th>Mode</th><th>F103C8T6</th><th>F407VET6</th></tr></thead>
<tbody>
<tr><td>Run (all peripherals on)</td><td>~50 mA @ 72 MHz</td><td>~100 mA @ 168 MHz</td></tr>
<tr><td>Sleep</td><td>~5 mA</td><td>~10 mA</td></tr>
<tr><td>Stop (with RTC)</td><td>~50 μA</td><td>~100 μA</td></tr>
<tr><td>Standby</td><td>~2 μA</td><td>~5 μA</td></tr>
</tbody>
</table>
<p>The F103 uses roughly half the active power. For battery-powered devices, that difference can be decisive. The F103's 2 μA standby lets it run for years on a coin cell.</p>
<h2>When to Choose Each</h2>
<h3>Choose STM32F103C8T6 when:</h3>
<ul>
<li>Your firmware fits in 64 KB Flash and 20 KB SRAM</li>
<li>You don't need floating-point math (or can do it in software)</li>
<li>No Ethernet required</li>
<li>Simple USB device (no host mode)</li>
<li>Battery-powered (active current matters)</li>
<li>Tight PCB space (LQFP-48)</li>
<li>Cost is critical ($2–3 vs $8–12)</li>
</ul>
<p><strong>Typical:</strong> Sensor nodes, BLDC motor controllers, Modbus RTU slaves, USB-to-serial adapters, IoT end devices.</p>
<h3>Choose STM32F407VET6 when:</h3>
<ul>
<li>Your firmware needs >64 KB Flash</li>
<li>You need floating-point performance (PID, FFT, sensor fusion, audio DSP)</li>
<li>Ethernet connectivity is required</li>
<li>USB host mode or dual USB needed</li>
<li>Camera/video capture required</li>
<li>External memory interface (FSMC) needed</li>
<li>You're building an industrial gateway or PLC</li>
</ul>
<p><strong>Typical:</strong> Industrial Ethernet gateways, servo drives with FOC, audio processing, medical devices with GUI, IoT edge gateways with TLS.</p>
<h2>Price Summary</h2>
<table>
<thead><tr><th>Part</th><th>Package</th><th>1K+ Price (USD, approx)</th></tr></thead>
<tbody>
<tr><td>STM32F103C8T6</td><td>LQFP-48</td><td>~$2–3</td></tr>
<tr><td>STM32F103RCT6 (256 KB)</td><td>LQFP-64</td><td>~$4–5</td></tr>
<tr><td>STM32F407VET6</td><td>LQFP-100</td><td>~$8–12</td></tr>
<tr><td>STM32F407VGT6 (1 MB)</td><td>LQFP-100</td><td>~$12–16</td></tr>
</tbody>
</table>
<p>If your BOM can absorb $8–12 for the MCU and you need Ethernet or FPU, the F407 is a bargain compared to adding an external Ethernet controller + application processor. If every dollar counts, the F103 is still the right call.</p>
<h2>Frequently Asked Questions</h2>
<h3>Q1: Can I run FreeRTOS on both?</h3>
<p><strong>A:</strong> Yes. F103 has 20 KB SRAM — enough for 5–8 tasks with moderate stacks. F407 has 192 KB — enough for 20+ tasks plus TCP/IP stacks and GUI buffers.</p>
<h3>Q2: Can I migrate from F103 to F407 without rewriting code?</h3>
<p><strong>A:</strong> HAL API is shared, so peripheral code (UART, SPI, I²C, timers) migrates with minimal changes. But pinouts are completely different — you'll need a new PCB. CMSIS core layer also differs (M3 vs M4F).</p>
<h3>Q3: Which has better ADC?</h3>
<p><strong>A:</strong> F407. Three ADCs at 2.4 MSPS each (7.2 MSPS interleaved) vs F103's two ADCs at 1 MSPS. F407 also has a DAC; the F103 doesn't.</p>
<h3>Q4: Which is better for a beginner?</h3>
<p><strong>A:</strong> F103. Cheaper, simpler, 10× more tutorials. Start with a $2 Blue Pill or $12 Nucleo board, learn the basics, then move to F4 if you need more power.</p>
<h3>Q5: Can I use the F407 as a replacement in an existing F103 design?</h3>
<p><strong>A:</strong> Not directly — different pin counts, packages, and power requirements. You'd need a new PCB layout. But shared HAL makes software migration manageable.</p>
<h3>Q6: Which has better long-term availability?</h3>
<p><strong>A:</strong> Both are active with over a decade of production. STM32F1 is ST's highest-volume line. F4 is guaranteed for long-term supply. Either is safe.</p>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "STM32F103C8T6 vs STM32F407VET6 - Which STM32 MCU to Choose?",
"description": "Complete comparison of STM32F103C8T6 (Cortex-M3) vs STM32F407VET6 (Cortex-M4F): specs, performance, peripherals, price, and selection guide.",
"proficiencyLevel": "Intermediate",
"about": {"@type": "Thing", "name": "STM32 MCU Comparison"}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{"@type": "Question", "name": "Can I run FreeRTOS on both?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. F103 has 20 KB SRAM for 5-8 tasks. F407 has 192 KB for 20+ tasks plus TCP/IP and GUI."}},
{"@type": "Question", "name": "Can I migrate from F103 to F407 without rewriting code?", "acceptedAnswer": {"@type": "Answer", "text": "HAL API is shared for peripheral code. Pinouts are different - new PCB needed."}},
{"@type": "Question", "name": "Which has better ADC?", "acceptedAnswer": {"@type": "Answer", "text": "F407: 3 ADCs at 2.4 MSPS each (7.2 MSPS interleaved). F103: 2 ADCs at 1 MSPS."}},
{"@type": "Question", "name": "Which is better for a beginner?", "acceptedAnswer": {"@type": "Answer", "text": "F103. Cheaper, simpler, 10x more tutorials. Start with a $2 Blue Pill."}},
{"@type": "Question", "name": "Which has better long-term availability?", "acceptedAnswer": {"@type": "Answer", "text": "Both active for over a decade. F1 is ST's highest-volume line. F4 is guaranteed long-term. Either is safe."}}
]
}
</script>