finds.dev← search

// the find

stm32-rs/stm32f1xx-hal

★ 651 · Rust · Apache-2.0 · updated May 2026

A Rust embedded-hal HAL impl for the STM32F1 family based on japarics stm32f103xx-hal

A Rust HAL implementation for the STM32F1 family (F100, F101, F103, F105, F107), part of the stm32-rs org. Targets hobbyists and professionals using Blue Pill boards or similar F1 hardware who want to write embedded Rust instead of C. Implements the embedded-hal 1.0 traits across all major peripherals.

Peripheral coverage is solid: GPIO, SPI, I2C, USART, ADC, DMA, CAN, USB, RTC, PWM, QEI — most of what you'd need on an F1 is here. The examples directory is genuinely useful; 50+ runnable examples covering DMA circular buffers, RTIC2 integration, USB serial, and PWM input capture, not just blinky. Dual embedded-hal support (both 0.2 and 1.0 traits implemented side by side) makes it compatible with most driver crates in the ecosystem. Active maintenance — last commit May 2026, CI covers clippy and rustfmt.

STM32F1 is a 2007-era microcontroller; if you're starting a new project today, F4 or beyond gives you more headroom for the same price. The feature flag system for density variants (medium/high/xl) is easy to get wrong and produces cryptic missing-peripheral errors when you specify the wrong one. DMA support is partial — not every peripheral that could use DMA has it wired up. Documentation lives almost entirely in doc comments and examples; there's no higher-level guide explaining clock tree configuration or common gotchas like the USB 1.5kΩ pull-up that bites Blue Pill users.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →