# STMicroelectronics STM32 boards (`netduino2`, `netduinoplus2`, `olimex-stm32-h405`, `stm32vldiscovery`)

The STM32 chips are a family of 32-bit Arm-based microcontrollers by STMicroelectronics.

The STM32F1 series is based on an Arm Cortex-M3 core. The following machines are based on this chip :

- `stm32vldiscovery` STM32VLDISCOVERY board with STM32F100RBT6 microcontroller

The STM32F2 series is based on an Arm Cortex-M3 core. The following machines are based on this chip :

- `netduino2` Netduino 2 board with STM32F205RFT6 microcontroller

The STM32F4 series is based on an Arm Cortex-M4F core, as well as the STM32L4 ultra-low-power series. The STM32F4 series is pin-to-pin compatible with STM32F2 series. The following machines are based on this Arm Cortex-M4F chip :

- `netduinoplus2` Netduino Plus 2 board with STM32F405RGT6 microcontroller

- `olimex-stm32-h405` Olimex STM32 H405 board with STM32F405RGT6 microcontroller

- `b-l475e-iot01a` B-L475E-IOT01A IoT Node board with STM32L475VG microcontroller

There are many other STM32 series that are currently not supported by QEMU.

## Supported devices

> - Arm Cortex-M3, Cortex-M4F

> - Analog to Digital Converter (ADC)

> - EXTI interrupt

> - Serial ports (USART)

> - SPI controller

> - System configuration (SYSCFG)

> - Timer controller (TIMER)

> - Reset and Clock Controller (RCC) (STM32F4 only, reset and enable only)

## Missing devices

> - Camera interface (DCMI)

> - Controller Area Network (CAN)

> - Cycle Redundancy Check (CRC) calculation unit

> - Digital to Analog Converter (DAC)

> - DMA controller

> - Ethernet controller

> - Flash Interface Unit

> - GPIO controller

> - I2C controller

> - Inter-Integrated Sound (I2S) controller

> - Power supply configuration (PWR)

> - Random Number Generator (RNG)

> - Real-Time Clock (RTC) controller

> - Reset and Clock Controller (RCC) (other features than reset and enable)

> - Secure Digital Input/Output (SDIO) interface

> - USB OTG

> - Watchdog controller (IWDG, WWDG)

## Boot options

The STM32 machines can be started using the `-kernel` option to load a firmware. Example:

    $ qemu-system-arm -M stm32vldiscovery -kernel firmware.bin