STM32F412 Nucleo board has support [RTduino](https://github.com/RTduino/RTduino). Users can use Arduino APIs, third party libraries and programming method to program on the board.
This board complies with Arduino UNO pins layout. For more details, please take a look at: [pins_arduino.c](pins_arduino.c) and [pins_arduino.h](pins_arduino.h).
> 1. Don't use a same hardware timer to drive PWM (analogRead) and servos at same time, because hardware timers can only generate a same frequency for 4 PWM channels. Otherwise, it could cause a failure when drive servos.
I2C bus is `SCL/D15` and `SDA/D14` pins. Users can directly include the `#include <Wire.h>`, which is the Arduino official I2C header file, to use the I2C bus.
The SPI bus of the Nucleo board is the `CS/D10`, `MOSI/D11`, `MISO/D12` and `SCK/D13` pins printed on the board. These `D11`, `D12` and `D13` pins It is taken over by the RT-Thread SPI device framework and there is no need to directly control these pins. User needs to operate `D10` chip select pin. Directly quote `#include <SPI.h>` (Arduino official SPI header file) to use. After using the SPI function, the PWM function of `D10` and `D11` will be irreversibly disabled and converted to the SPI function.
This board supports to use `Serial.` method to operate `uart3` device. See [example](https://github.com/RTduino/RTduino/blob/master/examples/Basic/helloworld.cpp).