Hardware Kit
ARM MCU (STM32)
32-bit Cortex-M microcontrollers with DMA, timers, and optional FPU. Ideal for mid-tier autonomy where you need determinism plus more compute headroom.
Cortex-M
RTOS-ready
Deterministic
Compute
Cortex-M3/M4/M7 @ 72-480 MHz
Memory
Flash 64 KB-2 MB, SRAM 20 KB-1 MB
OS/RTOS
Bare-metal or FreeRTOS
Toolchain
arm-none-eabi-gcc, CMSIS, STM32Cube
Power
3.3V, tens to hundreds of mA
Typical Boards
- Nucleo / Discovery boards for rapid bring-up
- STM32F4/F7/H7 custom boards for performance
- Low-power L-series for battery-focused builds
Toolchain + Build Profile
- Compiler: arm-none-eabi-gcc
- SDK: CMSIS + STM32Cube HAL/LL
- Debug: ST-Link, OpenOCD, SWD
cmake .. -DTARGET=stm32
cmake --build .
Pin-Level + Electrical
- 3.3V logic; some pins are 5V tolerant (check datasheet)
- Alternate functions: GPIO multiplexed with UART/I2C/SPI/CAN
- Timers: PWM generation and encoder inputs
- ADC: 12-16 bit; DMA for high-rate sampling
- Debug: SWD (SWCLK/SWDIO) + NRST
Sensors + Peripherals
- High-rate IMU via SPI/I2C
- Quadrature encoders via timer inputs
- Analog sensors via ADC
Comms + Networking
- CAN, UART, SPI, I2C; USB device/host on some parts
- RS-485 or CAN transceivers for rugged links
Real-Time + Determinism
- Use DMA to reduce ISR jitter
- Prioritize control tasks and bound interrupt latency
Recommended Vault Modules
Pitfalls + Mitigations
- Clock tree misconfiguration causes timing drift
- Peripheral pin conflicts due to alternate functions
- DMA/IRQ priorities starving control loops
Field Checklist
- Validate clock config and timer base
- Confirm 3.3V logic with sensors
- Set DMA/IRQ priorities for control loops
- Enable watchdog and brownout reset