text: /*
   *******************************************************************************
   * Copyright (c) 2018, STMicroelectronics
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 3. Neither the name of STMicroelectronics nor the names of its contributors
   *    may be used to endorse or promote products derived from this software
   *    without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   *******************************************************************************
   */
  #ifndef _VARIANT_ARDUINO_STM32_
  #define _VARIANT_ARDUINO_STM32_
  
  #ifdef __cplusplus
  extern "C" {
  #endif // __cplusplus
  
  /*----------------------------------------------------------------------------
   *        Pins
   *----------------------------------------------------------------------------*/
  
  // USB connector on the top, MCU side
  // Left Side
  #define PA0  A0 //D0/A0
  #define PA1  A1 //D1/A1
  #define PA2  A2 //D2/A2 - TX
  #define PA3  A3 //D3/A3 - RX
  #define PA4  A4 //D4/A4 - LED
  // Right side
  #define PA5  A5 //D5/A5 - SCK
  #define PA6  A6 //D6/A6 - MISO
  #define PA7  A7 //D7/A7 - MOSI
  #define PB1  A8 //D8/A8 - SS
  #define PA9  9  //D9    - SCL (TX UART header)
  #define PA10 10 //D10   - SDA (RX UART header)
  #define PA13 11 //D11   - SWDIO
  #define PA14 12 //D12   - SWCLK
  // Boards without a crystal can use these pins as well:
  #define PF0  13
  #define PF1  14
  
  // This must be a literal with the same value as PEND
  #define NUM_DIGITAL_PINS        15
  // This must be a literal with a value less than or equal to MAX_ANALOG_INPUTS
  #define NUM_ANALOG_INPUTS       9
  
  // On-board LED pin number
  #define LED_BUILTIN             PA4
  #define LED_GREEN               LED_BUILTIN
  
  // SPI Definitions
  #define PIN_SPI_SS              PB1
  #define PIN_SPI_MOSI            PA7
  #define PIN_SPI_MISO            PA6
  #define PIN_SPI_SCK             PA5
  
  // I2C Definitions
  #define PIN_WIRE_SDA            PA10 // Default for Arduino connector compatibility
  #define PIN_WIRE_SCL            PA9  // Default for Arduino connector compatibility
  
  // Timer Definitions
  // Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
  #define TIMER_TONE              TIM17
  #define TIMER_SERVO             TIM16
  
  // UART Definitions
  #define SERIAL_UART_INSTANCE    1
  // Default pin used for 'Serial' instance
  // Mandatory for Firmata
  #define PIN_SERIAL_RX           PA3
  #define PIN_SERIAL_TX           PA2
  
  #ifdef ARDUINO_DEMO_F030F4_16M
  #define HSE_VALUE               16000000U  /*!< Value of the External oscillator in Hz */
  #endif
  
  #ifdef __cplusplus
  } // extern "C"
  #endif
  /*----------------------------------------------------------------------------
   *        Arduino objects - C++ only
   *----------------------------------------------------------------------------*/
  
  #ifdef __cplusplus
  // These serial port names are intended to allow libraries and architecture-neutral
  // sketches to automatically default to the correct port name for a particular type
  // of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
  // the first hardware serial port whose RX/TX pins are not dedicated to another use.
  //
  // SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
  //
  // SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
  //
  // SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
  //
  // SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
  //
  // SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
  //                            pins are NOT connected to anything by default.
  #define SERIAL_PORT_MONITOR     Serial
  #define SERIAL_PORT_HARDWARE    Serial
  #endif
  
  #endif /* _VARIANT_ARDUINO_STM32_ */
  