From 987d3dfc2787593bbc33e7babc415191cb8d8880 Mon Sep 17 00:00:00 2001 From: dds90 <40141422+dds90@users.noreply.github.com> Date: Mon, 30 Dec 2019 19:37:25 +0100 Subject: [PATCH 1/5] Add files via upload --- boards.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/boards.txt b/boards.txt index 7cae09cbb7..ab3b11e36e 100644 --- a/boards.txt +++ b/boards.txt @@ -1,4 +1,4 @@ -# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification +# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification menu.pnum=Board part number @@ -847,6 +847,14 @@ GenF1.menu.pnum.MAPLEMINI_F103CB.build.board=MAPLEMINI_F103CB GenF1.menu.pnum.MAPLEMINI_F103CB.build.product_line=STM32F103xB GenF1.menu.pnum.MAPLEMINI_F103CB.build.variant=MAPLEMINI_F103CB +# VCCGND_F103ZET6 board +GenF1.menu.pnum.VCCGND_F103ZET6=VCCGND_F103ZET6 +GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_size=524288 +GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_data_size=65536 +GenF1.menu.pnum.VCCGND_F103ZET6.build.board=VCCGND_F103ZET6 +GenF1.menu.pnum.VCCGND_F103ZET6.build.product_line=STM32F103xE +GenF1.menu.pnum.VCCGND_F103ZET6.build.variant=VCCGND_F103ZET6 + # Upload menu GenF1.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) GenF1.menu.upload_method.swdMethod.upload.protocol=0 From 5dd006a3075ecff44885beb949534da0cfaa3f8a Mon Sep 17 00:00:00 2001 From: dds90 <40141422+dds90@users.noreply.github.com> Date: Mon, 30 Dec 2019 19:38:39 +0100 Subject: [PATCH 2/5] Create ldscript.ld --- variants/VCCGND_F103ZET6/ldscript.ld | 187 +++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 variants/VCCGND_F103ZET6/ldscript.ld diff --git a/variants/VCCGND_F103ZET6/ldscript.ld b/variants/VCCGND_F103ZET6/ldscript.ld new file mode 100644 index 0000000000..03e7a5e600 --- /dev/null +++ b/variants/VCCGND_F103ZET6/ldscript.ld @@ -0,0 +1,187 @@ +/* +****************************************************************************** +** + +** File : LinkerScript.ld +** +** Author : Auto-generated by System Workbench for STM32 +** +** Abstract : Linker script for STM32F103ZETx series +** 512Kbytes FLASH and 64Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2019 STMicroelectronics

+** +** 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. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20010000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K +FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} From b724e14ea6b3e2457db2f8e9f8f7842d39e5e3b3 Mon Sep 17 00:00:00 2001 From: dds90 <40141422+dds90@users.noreply.github.com> Date: Mon, 30 Dec 2019 19:39:49 +0100 Subject: [PATCH 3/5] Add New Variant VCCGND_F103ZET6 Add New Variant VCCGND_F103ZET6 Schema: https://ydsd1.oss-cn-shenzhen.aliyuncs.com/STM32F1/103ZEmini.rar --- variants/VCCGND_F103ZET6/PeripheralPins.c | 334 ++++++++++++++++++++++ variants/VCCGND_F103ZET6/PinNamesVar.h | 30 ++ variants/VCCGND_F103ZET6/variant.cpp | 230 +++++++++++++++ variants/VCCGND_F103ZET6/variant.h | 312 ++++++++++++++++++++ 4 files changed, 906 insertions(+) create mode 100644 variants/VCCGND_F103ZET6/PeripheralPins.c create mode 100644 variants/VCCGND_F103ZET6/PinNamesVar.h create mode 100644 variants/VCCGND_F103ZET6/variant.cpp create mode 100644 variants/VCCGND_F103ZET6/variant.h diff --git a/variants/VCCGND_F103ZET6/PeripheralPins.c b/variants/VCCGND_F103ZET6/PeripheralPins.c new file mode 100644 index 0000000000..7e05d6cdbe --- /dev/null +++ b/variants/VCCGND_F103ZET6/PeripheralPins.c @@ -0,0 +1,334 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + * Automatically generated from STM32F103Z(C-D-E)Tx.xml + */ +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Note: Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + // {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 + // {PA_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0 + // {PA_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0 + // {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 + // {PA_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1 + // {PA_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1 + // {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 + // {PA_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2 + // {PA_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2 + // {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 + // {PA_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3 + // {PA_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3 + // {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 + // {PA_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4 + // {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 + // {PA_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5 + // {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 + // {PA_6, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6 + // {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 + // {PA_7, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7 + // {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 + // {PB_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8 + // {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 + // {PB_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9 + // {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 + // {PC_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10 + {PC_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10 + // {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 + // {PC_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11 + {PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11 + // {PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 + // {PC_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12 + // {PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12 + // {PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13 + // {PC_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13 + // {PC_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13 + // {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14 + // {PC_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14 + // {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 + // {PC_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15 + {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_IN4 + {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_IN5 + {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6 + {PF_9, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7 + //{PF_10, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +// #ifdef HAL_DAC_MODULE_ENABLED +// WEAK const PinMap PinMap_DAC[] = { + // {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1 + // {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 + // {NC, NP, 0} +// }; +// #endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, + //{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)}, + //{PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, + //{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)}, + //{PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +//*** PWM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_PWM[] = { + // {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM2_CH1 + // {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 1, 0)}, // TIM2_CH1 + // {PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM5_CH1 + // {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM2_CH2 + // {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 2, 0)}, // TIM2_CH2 + // {PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM5_CH2 + // {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM2_CH3 + // {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 3, 0)}, // TIM2_CH3 + // {PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM5_CH3 + // {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM2_CH4 + // {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 4, 0)}, // TIM2_CH4 + // {PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM5_CH4 + // {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM3_CH1 + // {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 1, 1)}, // TIM1_CH1N + // {PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM3_CH2 + // {PA_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 1)}, // TIM8_CH1N + // {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM1_CH1 + // {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 1, 0)}, // TIM1_CH1 + // {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM1_CH2 + // {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 2, 0)}, // TIM1_CH2 + // {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM1_CH3 + // {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 3, 0)}, // TIM1_CH3 + // {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM1_CH4 + // {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 4, 0)}, // TIM1_CH4 + // {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 1, 0)}, // TIM2_CH1 + // {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 1, 0)}, // TIM2_CH1 + // {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 2, 1)}, // TIM1_CH2N + // {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM3_CH3 + // {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 3, 0)}, // TIM3_CH3 + // {PB_0, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 1)}, // TIM8_CH2N + // {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 3, 1)}, // TIM1_CH3N + // {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM3_CH4 + // {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 4, 0)}, // TIM3_CH4 + // {PB_1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 1)}, // TIM8_CH3N + // {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 2, 0)}, // TIM2_CH2 + // {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 2, 0)}, // TIM3_CH2 + // {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM4_CH1 + // {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM4_CH2 + // {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM4_CH3 + // {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM4_CH4 + // {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 3, 0)}, // TIM2_CH3 + // {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 3, 0)}, // TIM2_CH3 + // {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 4, 0)}, // TIM2_CH4 + // {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 4, 0)}, // TIM2_CH4 + // {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 1)}, // TIM1_CH1N + // {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 1)}, // TIM1_CH2N + // {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 1)}, // TIM1_CH3N + // {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 1, 0)}, // TIM3_CH1 + // {PC_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM8_CH1 + // {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 2, 0)}, // TIM3_CH2 + // {PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM8_CH2 + // {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 3, 0)}, // TIM3_CH3 + // {PC_8, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM8_CH3 + // {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 4, 0)}, // TIM3_CH4 + // {PC_9, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM8_CH4 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM4_ENABLE, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM4_ENABLE, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM4_ENABLE, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM4_ENABLE, 4, 0)}, // TIM4_CH4 + // {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 1, 1)}, // TIM1_CH1N + // {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 1, 0)}, // TIM1_CH1 + // {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 2, 1)}, // TIM1_CH2N + // {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 2, 0)}, // TIM1_CH2 + // {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 3, 1)}, // TIM1_CH3N + // {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 3, 0)}, // TIM1_CH3 + // {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_ENABLE, 4, 0)}, // TIM1_CH4 + {NC, NP, 0} +}; +#endif + +//*** SERIAL *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART1_ENABLE)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, + //{PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART2_ENABLE)}, + //{PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_ENABLE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_3, USART2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, + //{PB_7, USART1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART1_ENABLE)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, + //{PC_11, UART4, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, + //{PC_11, USART3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, + //{PD_2, UART5, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, + //{PD_6, USART2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART2_ENABLE)}, + //{PD_9, USART3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART3_ENABLE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + // {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, + // {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART2_ENABLE)}, + // {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_ENABLE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + // {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, + // {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART2_ENABLE)}, + // {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_ENABLE)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, + //{PB_5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, + //{PB_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, + //{PB_3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + //{PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + // {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, + // {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + // {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, + {NC, NP, 0} +}; +#endif + +//*** CAN *** + +// #ifdef HAL_CAN_MODULE_ENABLED +// WEAK const PinMap PinMap_CAN_RD[] = { + // {PA_11, CAN1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, + // {PB_8, CAN1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_CAN1_2)}, + // {PD_0, CAN1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_CAN1_3)}, + // {NC, NP, 0} +// }; +// #endif + +// #ifdef HAL_CAN_MODULE_ENABLED +// WEAK const PinMap PinMap_CAN_TD[] = { + // {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)}, + // {PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_CAN1_2)}, + // {PD_1, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_CAN1_3)}, + // {NC, NP, 0} +// }; +// #endif + +//*** No ETHERNET *** + +//*** No QUADSPI *** + +//*** USB *** + +#ifdef HAL_PCD_MODULE_ENABLED +WEAK const PinMap PinMap_USB[] = { + {PA_11, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DM + {PA_12, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DP + {NC, NP, 0} +}; +#endif + +//*** No USB_OTG_FS *** + +//*** No USB_OTG_HS *** + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + //{PB_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D4 + //{PB_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D5 + //{PC_6, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D6 + //{PC_7, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D7 + {PC_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D0 + {PC_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D1 + {PC_10, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D2 + {PC_11, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D3 + {PC_12, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)}, // SDIO_CK + {PD_2, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)}, // SDIO_CMD + {NC, NP, 0} +}; +#endif diff --git a/variants/VCCGND_F103ZET6/PinNamesVar.h b/variants/VCCGND_F103ZET6/PinNamesVar.h new file mode 100644 index 0000000000..f7fb9d83a4 --- /dev/null +++ b/variants/VCCGND_F103ZET6/PinNamesVar.h @@ -0,0 +1,30 @@ +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 +SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 +SYS_WKUP2 = NC, +#endif +#ifdef PWR_WAKEUP_PIN3 +SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 +SYS_WKUP4 = NC, +#endif +#ifdef PWR_WAKEUP_PIN5 +SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 +SYS_WKUP6 = NC, +#endif +#ifdef PWR_WAKEUP_PIN7 +SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 +SYS_WKUP8 = NC, +#endif +/* USB */ +#ifdef USBCON +USB_DM = PA_11, +USB_DP = PA_12, +#endif diff --git a/variants/VCCGND_F103ZET6/variant.cpp b/variants/VCCGND_F103ZET6/variant.cpp new file mode 100644 index 0000000000..d5f63defaf --- /dev/null +++ b/variants/VCCGND_F103ZET6/variant.cpp @@ -0,0 +1,230 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ + +#include "pins_arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Digital PinName array +// This array allows to wrap Arduino pin number(Dx or x) +// to STM32 PinName (PX_n) +const PinName digitalPin[] = { + //PX_n, //Dx + PE_0, //D0 + PE_1, //D1 + PE_2, //D2 + PE_3, //D3 + PE_4, //D4 + PE_5, //D5 + PE_6, //D6 + PC_13, //D7 + PC_14, //D8 - LSE + PC_15, //D9 - LSE + PF_0, //D10 + PF_1, //D11 + PF_2, //D12 + PF_3, //D13 + PF_4, //D14 + PF_5, //D15 + PF_6, //D16 + PF_7, //D17 + PF_8, //D18 + PF_9, //D19 + PF_10, //D20 + PC_0, //D21 + PC_1, //D22 + PC_2, //D23 + PC_3, //D24 + PA_0, //D25 + PA_1, //D26 + PA_2, //D27 + PA_3, //D28 + PA_4, //D29 + PA_5, //D30 - SPI SCLK + PA_6, //D31 - SPI MISO + PA_7, //D32 - SPI MOSI + PC_4, //D33 + PC_5, //D34 + PB_0, //D35 + PB_1, //D36 + PB_2, //D37 - BOOT1 + PF_11, //D38 + PF_12, //D39 + PF_13, //D40 + PF_14, //D41 + PF_15, //D42 + PG_0, //D43 + PG_1, //D44 + PE_7, //D45 + PE_8, //D46 + PE_9, //D47 + PE_10, //D48 + PE_11, //D49 + PE_12, //D50 + PE_13, //D51 + PE_14, //D52 + PE_15, //D53 + PB_10, //D54 + PB_11, //D55 + PB_12, //D56 + PB_13, //D57 + PB_14, //D58 + PB_15, //D59 + PD_8, //D60 + PD_9, //D61 + PD_10, //D62 + PD_11, //D63 + PD_12, //D64 + PD_13, //D65 + PD_14, //D66 + PD_15, //D67 + PG_2, //D68 + PG_3, //D69 + PG_4, //D70 + PG_5, //D71 + PG_6, //D72 + PG_7, //D73 + PG_8, //D74 + PC_6, //D75 + PC_7, //D76 + PC_8, //D77 + PC_9, //D78 + PA_8, //D79 + PA_9, //D80 + PA_10, //D81 + PA_11, //D82 - USB DM + PA_12, //D83 - USB DP + PA_13, //D84 - SWDI0 + PA_14, //D85 - SWCLK + PA_15, //D86 + PC_10, //D87 + PC_11, //D88 + PC_12, //D89 + PD_0, //D90 + PD_1, //D91 + PD_2, //D92 + PD_3, //D93 + PD_4, //D94 + PD_5, //D95 + PD_6, //D96 + PD_7, //D97 + PG_9, //D98 + PG_10, //D99 + PG_11, //D100 + PG_12, //D101 + PG_13, //D102 + PG_14, //D103 + PG_15, //D104 - LED_BUILTIN + PB_3, //D105 + PB_4, //D106 + PB_5, //D107 + PB_6, //D108 - I2C SCL + PB_7, //D109 - I2C SDA + PB_8, //D110 + PB_9, //D111 + // Required only if Ax pins are automaticaly defined using `NUM_ANALOG_FIRST` + // and have to be contiguous in this array + // Duplicated pins in order to be aligned with PinMap_ADC + PC_0, //D112/A0 = D0 + PC_1, //D123/A1 = D1 + PF_6, //D114/A2 = D2 + PF_7, //D115/A3 = D3 + PF_8, //D116/A4 = D4 + PF_9, //D117/A5 = D5 + PF_10 //D118/A6 = D6 + +}; + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief System Clock Configuration + * The system Clock is configured as follow : + * System Clock source = PLL (HSE) + * SYSCLK(Hz) = 72000000 + * HCLK(Hz) = 72000000 + * AHB Prescaler = 1 + * APB1 Prescaler = 2 + * APB2 Prescaler = 1 + * PLL_Source = HSE + * PLL_Mul = 9 + * Flash Latency(WS) = 2 + * ADC Prescaler = 6 + * USB Prescaler = 1.5 + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + // Here copy the desired System Clock Configuration + // It could be generated thanks STM32CubeMX after code generation for Toolchain/IDE: 'SW4STM32', + // available in src/main.c + // or + // copied from a STM32CubeYY project examples + // where 'YY' could be F0, F1, F2, F3, F4, F7, G0, G4, H7, L0, L1, L4, MP1, WB + + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_ADC + |RCC_PERIPHCLK_USB; + PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI; + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +#ifdef __cplusplus +} +#endif diff --git a/variants/VCCGND_F103ZET6/variant.h b/variants/VCCGND_F103ZET6/variant.h new file mode 100644 index 0000000000..dbac54acdd --- /dev/null +++ b/variants/VCCGND_F103ZET6/variant.h @@ -0,0 +1,312 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ + +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +// Define pin names to match digital pin number --> Dx +// It could be used with preprocessor tests (e.g. #if PXn == 3) +// so an enum will not work. +// !!! +// !!! Copy the digitalPin[] array from the variant.cpp +// !!! and remove all '_': PX_n --> PXn +// !!! For NC, comment the line to warn x pin number is NC +// !!! // x is NC +// !!! For duplicated pin name, comment the line to warn x pin number +// !!! is PXn which is already defined with y pin number +// !!! // x is PXn (y) +// !!! Ex: +// !!! ... +// !!! #define PA4 20 // A14 <-- if NUM_ANALOG_FIRST not defined +// !!! or +// !!! #define PA4 A14 // 20 <-- if NUM_ANALOG_FIRST defined +// !!! #define PB4 21 +// !!! #define PB5 22 +// !!! #define PB3 23 +// !!! // 24 is PA4 (20) +// !!! // 25 is PB4 (21) +// !!! #define PA2 26 // A15 <-- if NUM_ANALOG_FIRST not defined +// !!! or +// !!! #define PA2 A15 // 26 <-- if NUM_ANALOG_FIRST defined +// !!! ... +//#define PXn x +#define PE0 0 +#define PE1 1 +#define PE2 2 +#define PE3 3 +#define PE4 4 +#define PE5 5 +#define PE6 6 +#define PC13 7 +#define PC14 8 // LSE +#define PC15 9 // LSE +#define PF0 10 +#define PF1 11 +#define PF2 12 +#define PF3 13 +#define PF4 14 +#define PF5 15 +#define PF6 16 +#define PF7 17 +#define PF8 18 +#define PF9 19 +#define PF10 20 +#define PC0 21 +#define PC1 22 +#define PC2 23 +#define PC3 24 +#define PA0 25 +#define PA1 26 +#define PA2 27 +#define PA3 28 +#define PA4 29 +#define PA5 30 // SPI SCLK +#define PA6 31 // SPI MISO +#define PA7 32 // SPI MOSI +#define PC4 33 +#define PC5 34 +#define PB0 35 +#define PB1 36 +#define PB2 37 // BOOT1 +#define PF11 38 +#define PF12 39 +#define PF13 40 +#define PF14 41 +#define PF15 42 +#define PG0 43 +#define PG1 44 +#define PE7 45 +#define PE8 46 +#define PE9 47 +#define PE10 48 +#define PE11 49 +#define PE12 50 +#define PE13 51 +#define PE14 52 +#define PE15 53 +#define PB10 54 +#define PB11 55 +#define PB12 56 +#define PB13 57 +#define PB14 58 +#define PB15 59 +#define PD8 60 +#define PD9 61 +#define PD10 62 +#define PD11 63 +#define PD12 64 +#define PD13 65 +#define PD14 66 +#define PD15 67 +#define PG2 68 +#define PG3 69 +#define PG4 70 +#define PG5 71 +#define PG6 72 +#define PG7 73 +#define PG8 74 +#define PC6 75 +#define PC7 76 +#define PC8 77 +#define PC9 78 +#define PA8 79 +#define PA9 80 +#define PA10 81 +#define PA11 82 // USB DM +#define PA12 83 // USB DP +#define PA13 84 // SWDI0 +#define PA14 85 // SWCLK +#define PA15 86 +#define PC10 87 +#define PC11 88 +#define PC12 89 +#define PD0 90 +#define PD1 91 +#define PD2 92 +#define PD3 93 +#define PD4 94 +#define PD5 95 +#define PD6 96 +#define PD7 97 +#define PG9 98 +#define PG10 99 +#define PG11 100 +#define PG12 101 +#define PG13 102 +#define PG14 103 +#define PG15 104 // LEDBUILTIN +#define PB3 105 +#define PB4 106 +#define PB5 107 +#define PB6 108 // I2C SCL +#define PB7 109 // I2C SDA +#define PB8 110 +#define PB9 111 + +// This must be a literal +// It is used with preprocessor tests (e.g. #if NUM_DIGITAL_PINS > 3) +// so an enum will not work. +#define NUM_DIGITAL_PINS 112 + +// Allow to define Arduino style alias for analog input pin number --> Ax +// If no analog pin required then NUM_ANALOG_INPUTS could not be defined +// or set to `0` +// All pins are digital, analog inputs are a subset of digital pins. +// This must be a literal +// It is used with preprocessor tests (e.g. #if NUM_ANALOG_INPUTS > 3) +// so an enum will not work. +// !!! +// !!! It must be aligned with the number of analog PinName +// !!! defined in digitalPin[] array in variant.cpp +// !!! +#define NUM_ANALOG_INPUTS 6 + +// They are 2 possibles way to define analog pins: +//------------------------------------------------------------------------------------------- +// - If they are contiguous in the digitalPin array: +// Simply defined `NUM_ANALOG_FIRST` and all pins Ax will be automatically defined. +// It define the digital pin number of the first analog input (i.e. which digital pin is A0) +// First analog pin value (A0) must be greater than or equal to NUM_ANALOG_INPUTS +// This must be a literal with a value less than or equal to MAX_ANALOG_INPUTS +// defined in pin_arduino.h +#define NUM_ANALOG_FIRST 112 +//------------------------------------OR------------------------------------------------------ +// - If they are not contiguous in the digitalPin array: +// Add an analogInputPin array in the variant.cpp without defining NUM_ANALOG_FIRST +// In that case the defined PYn for analog pin have to define the Ax definition instead of +// index in digitalPin[] array: +// #define PA4 A14 +//------------------------------------------------------------------------------------------- + + +// Below ADC and PWM definitions already done in the core +// Could be redefined here if needed +// ADC resolution is 10 bits +//#define ADC_RESOLUTION 10 + +// PWM resolution +//#define PWM_RESOLUTION 8 +//#define PWM_FREQUENCY 1000 +//#define PWM_MAX_DUTY_CYCLE 255 + +// On-board LED pin number +#define LED_BUILTIN PG15 +#define LED_BLUE LED_BUILTIN + +// On-board user button +//#define USER_BTN x + +// Below SPI and I2C definitions already done in the core +// Could be redefined here if differs from the default one +// SPI Definitions +//#define PIN_SPI_SS 10 // Default for Arduino connector compatibility +#define PIN_SPI_MOSI PA7 // Default for Arduino connector compatibility +#define PIN_SPI_MISO PA6 // Default for Arduino connector compatibility +#define PIN_SPI_SCK PA5 // Default for Arduino connector compatibility + +// I2C Definitions +#define PIN_WIRE_SDA PB7 // Default for Arduino connector compatibility +#define PIN_WIRE_SCL PB6 // Default for Arduino connector compatibility + +// I2C timing definitions (optional), avoid time spent to compute if defined +// * I2C_TIMING_SM for Standard Mode (100kHz) +// * I2C_TIMING_FM for Fast Mode (400kHz) +// * I2C_TIMING_FMP for Fast Mode Plus (1000kHz) +//#define I2C_TIMING_SM 0x00000000 +//#define I2C_TIMING_FM 0x00000000 +//#define I2C_TIMING_FMP 0x00000000 + +// Timer Definitions (optional) +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#define TIMER_TONE TIM6 +#define TIMER_SERVO TIM7 + +// UART Definitions +// Define here Serial instance number to map on Serial generic name +#define SERIAL_UART_INSTANCE 1 //ex: 2 for Serial2 (USART2) +// DEBUG_UART could be redefined to print on another instance than 'Serial' +//#define DEBUG_UART ((USART_TypeDef *) U(S)ARTX) // ex: USART3 +// DEBUG_UART baudrate, default: 9600 if not defined +//#define DEBUG_UART_BAUDRATE x +// DEBUG_UART Tx pin name, default: the first one found in PinMap_UART_TX for DEBUG_UART +//#define DEBUG_PINNAME_TX PX_n // PinName used for TX + +// Default pin used for 'Serial' instance (ex: ST-Link) +// Mandatory for Firmata +#define PIN_SERIAL_RX PA10 +#define PIN_SERIAL_TX PA9 + +// UART Definitions +#define SERIAL_UART_INSTANCE 2 +// Default pin used for 'Serial2' instance +#define PIN_SERIAL1_RX PA3 +#define PIN_SERIAL1_TX PA2 + +// UART Definitions +#define SERIAL_UART_INSTANCE 3 +// Default pin used for 'Serial3' instance +#define PIN_SERIAL2_RX PB11 +#define PIN_SERIAL2_TX PB10 + + +// Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number +// Used when user instanciate a hardware Serial using its peripheral name. +// Example: HardwareSerial mySerial(USART3); +// will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. +//#define PIN_SERIALn_RX x // For U(S)ARTn RX +//#define PIN_SERIALn_TX x // For U(S)ARTn TX +//#define PIN_SERIALLP1_RX x // For LPUART1 RX +//#define PIN_SERIALLP1_TX x // For LPUART1 TX + +// SD card slot Definitions +// SD detect signal can be defined if required +#define SD_DETECT_PIN PF10 +// SD Read/Write timeout, default value defined in STM32SD library +//#define SD_DATATIMEOUT x + +#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 Serial1 +#endif + +#endif /* _VARIANT_ARDUINO_STM32_ */ From 63adec98ee8613bdd8807011c5e122fae22def90 Mon Sep 17 00:00:00 2001 From: dds90 <40141422+dds90@users.noreply.github.com> Date: Wed, 22 Jul 2020 21:00:27 +0200 Subject: [PATCH 4/5] [New variant] STM32F407ZGT6 Mini https://github.com/stm32duino/Arduino_Core_STM32/issues/635 --- README.md | 369 +++++++++++++-------- boards.txt | 948 ++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 1095 insertions(+), 222 deletions(-) diff --git a/README.md b/README.md index d22eb06bed..4972c31915 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ # Arduino core support for STM32 based boards +[![forums](https://img.shields.io/badge/join-the%20forums-blue.svg)](https://www.stm32duino.com/) +[![wiki](https://img.shields.io/badge/browse-the%20wiki-orange.svg)](https://github.com/stm32duino/wiki/wiki) +![STM32 Core Continuous Integration](https://github.com/stm32duino/Arduino_Core_STM32/workflows/STM32%20Core%20Continuous%20Integration/badge.svg?branch=master) + [![GitHub release](https://img.shields.io/github/release/stm32duino/Arduino_Core_STM32.svg)](https://github.com/stm32duino/Arduino_Core_STM32/releases/latest) ![GitHub All Releases](https://img.shields.io/github/downloads/stm32duino/Arduino_Core_STM32/total.svg?label=downloads%20since%201.4.0) -[![GitHub commits](https://img.shields.io/github/commits-since/stm32duino/Arduino_Core_STM32/1.8.0.svg)](https://github.com/stm32duino/Arduino_Core_STM32/compare/1.8.0...master) -[![Build Status](https://travis-ci.com/stm32duino/Arduino_Core_STM32.svg?branch=master)](https://travis-ci.com/stm32duino/Arduino_Core_STM32) +[![GitHub commits](https://img.shields.io/github/commits-since/stm32duino/Arduino_Core_STM32/1.9.0.svg)](https://github.com/stm32duino/Arduino_Core_STM32/compare/1.9.0...master) + * [Introduction](https://github.com/stm32duino/Arduino_Core_STM32#Introduction)
* [Getting Started](https://github.com/stm32duino/Arduino_Core_STM32#getting-started)
-* [Boards available](https://github.com/stm32duino/Arduino_Core_STM32#boards-available)
+* [Supported boards](https://github.com/stm32duino/Arduino_Core_STM32#supported-boards)
* [Troubleshooting](https://github.com/stm32duino/Arduino_Core_STM32#troubleshooting)
* [Wiki](https://github.com/stm32duino/wiki/wiki/) @@ -37,140 +41,243 @@ Advanced user can use the repository to benefit from the latest development. See User can add a STM32 based board following this [wiki](https://github.com/stm32duino/wiki/wiki/Add-a-new-variant-(board)). -## Boards available - -| Status | [Nucleo 144](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [Nucleo F207ZG](http://www.st.com/en/evaluation-tools/nucleo-f207zg.html) | *0.2.0* | | -| :green_heart: | [Nucleo F429ZI](http://www.st.com/en/evaluation-tools/nucleo-f429zi.html) | *0.1.0* | | -| :green_heart: | [Nucleo F767ZI](http://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | *1.4.0* | | -| :green_heart: | [Nucleo L496ZG](http://www.st.com/en/evaluation-tools/nucleo-l496zg.html) | *1.3.0* | | -| :green_heart: | [Nucleo L496ZG-P](http://www.st.com/en/evaluation-tools/nucleo-l496zg-p.html) | *1.3.0* | | -| :green_heart: | [Nucleo L4R5ZI](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html) | *1.4.0* | | -| :green_heart: | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | | -| :green_heart: | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 | - -| Status | [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [Nucleo F030R8](http://www.st.com/en/evaluation-tools/nucleo-f030r8.html) | *0.2.0* | | -| :green_heart: | [Nucleo F091RC](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | *0.1.0* | | -| :green_heart: | [Nucleo F103RB](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | *0.2.0* | | -| :green_heart: | [Nucleo F302R8](http://www.st.com/en/evaluation-tools/nucleo-f302r8.html) | *1.1.0* | | -| :green_heart: | [Nucleo F303RE](http://www.st.com/en/evaluation-tools/nucleo-f303re.html) | *0.1.0* | | -| :green_heart: | [Nucleo F401RE](http://www.st.com/en/evaluation-tools/nucleo-f401re.html) | *0.2.1* | | -| :green_heart: | [Nucleo F411RE](http://www.st.com/en/evaluation-tools/nucleo-f411re.html) | *0.2.1* | | -| :green_heart: | [Nucleo F446RE](http://www.st.com/en/evaluation-tools/nucleo-f446re.html) | *1.1.1* | | -| :green_heart: | [Nucleo-G071RB](https://www.st.com/en/evaluation-tools/nucleo-g071rb.html) | *1.6.0* | | -| :green_heart: | [Nucleo-G431RB](https://www.st.com/en/evaluation-tools/nucleo-g431rb.html) | *1.7.0* | | -| :green_heart: | [Nucleo-G474RE](https://www.st.com/en/evaluation-tools/nucleo-g474re.html) | *1.7.0* | | -| :green_heart: | [Nucleo L053R8](http://www.st.com/en/evaluation-tools/nucleo-l053r8.html) | *0.1.0* | | -| :green_heart: | [Nucleo L073RZ](http://www.st.com/en/evaluation-tools/nucleo-l073rz.html) | *1.4.0* | | -| :green_heart: | [Nucleo L152RE](http://www.st.com/en/evaluation-tools/nucleo-l152re.html) | *1.0.0* | | -| :green_heart: | [Nucleo L452RE](http://www.st.com/en/evaluation-tools/nucleo-l452re.html) | *1.5.0* | | -| :green_heart: | [Nucleo L452RE-P](http://www.st.com/en/evaluation-tools/nucleo-l452re-p.html) | *1.8.0* | | -| :green_heart: | [Nucleo L476RG](http://www.st.com/en/evaluation-tools/nucleo-l476rg.html) | *0.1.0* | | -| :green_heart: | [P-Nucleo-WB55RG](https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html) | *1.6.0* | No BLE support | - -| Status | [Nucleo 32](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [Nucleo F303K8](http://www.st.com/en/evaluation-tools/nucleo-f303k8.html) | *1.1.0* | | -| :green_heart: | [Nucleo-G431KB](https://www.st.com/en/evaluation-tools/nucleo-g431kb.html) | *1.7.0* | | -| :green_heart: | [Nucleo L031K6](http://www.st.com/en/evaluation-tools/nucleo-l031k6.html) | *1.1.1* | | -| :green_heart: | [Nucleo L412KB](http://www.st.com/en/evaluation-tools/nucleo-l412kb.html) | *1.5.0* | | -| :green_heart: | [Nucleo L432KC](http://www.st.com/en/evaluation-tools/nucleo-l432kc.html) | *0.2.0* | | - -| Status | [Discovery](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-discovery-kits.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [32F0308DISCOVERY](http://www.st.com/en/evaluation-tools/32f0308discovery.html) | *1.3.0* | | -| :green_heart: | [32F072BDISCOVERY](https://www.st.com/en/evaluation-tools/32f072bdiscovery.html) | *1.5.0* | | -| :green_heart: | [STM32VLDISCOVERY](https://www.st.com/en/evaluation-tools/stm32vldiscovery.html) | 0.2.1 | | -| :green_heart: | [STM32F407G-DISC1](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) | *0.1.0* | | -| :green_heart: | [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | *0.1.0* | | -| :green_heart: | [B-L072Z-LRWAN1](http://www.st.com/en/evaluation-tools/b-l072z-lrwan1.html) | *1.1.0* | | -| :green_heart: | [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | *1.0.1* | | - -| Status | [Eval](https://www.st.com/en/evaluation-tools/stm32-eval-boards.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [STEVAL-MKSBOX1V1 (SensorTile.box)](https://www.st.com/en/evaluation-tools/steval-mksbox1v1.html) | *1.7.0* | | - -| Status | [STM32MP1 series coprocessor](https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-arm-cortex-mpus/stm32mp1-series.html) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [STM32MP157A-DK1](https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html) | *1.8.0* | See [the documentation](https://github.com/stm32duino/Arduino_Core_STM32/tree/master/variants/STM32MP157_DK/README.md) to use this board| -| :green_heart: | [STM32MP157C-DK2](https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html) | *1.8.0* | See [the documentation](https://github.com/stm32duino/Arduino_Core_STM32/tree/master/variants/STM32MP157_DK/README.md) to use this board| - - -| Status | Generic STM32F0xx | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [STM32F030F4 Demo board](https://stm32-base.org/boards/STM32F030F4P6-STM32F030-DEMO-BOARD-V1.1) | *1.5.0* | | - -| Status | Generic STM32F1xx | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [BluePill F103C(6-8-B)](https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill) | *1.2.0* | USB CDC support since *1.5.0*, Maple bootloaders support since *1.6.0* | -| :green_heart: | [BlackPill F103C(8-B)](https://stm32-base.org/boards/STM32F103C8T6-Black-Pill) | *1.5.0* | | -| :green_heart: | [Generic F103R(8-B-C-E)T6](https://stm32-base.org/boards/STM32F103RET6-Generic-Board) | *1.7.0* | Blue Button | -| :green_heart: | HY-TinySTM103T | *1.5.0* | | -| :green_heart: | MapleMini F103CB | *1.2.0* | USB CDC support since *1.5.0*, Maple bootloaders support since *1.6.0* | - -| Status | Generic STM32F3xx | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [RobotDyn BlackPill F303CC](https://robotdyn.com/catalog/development-boards/stm-boards-and-shields.html) | *1.6.1* | | - -| Status | Generic STM32F4xx | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [Adafruit Feather STM32F405 Express](https://www.adafruit.com/product/4382) | *1.8.0* | | -| :green_heart: | BlackPill F401CC | *1.7.0* | | -| :green_heart: | [Black F407VET6](https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0) | *1.4.0* | VG/ZE/ZG in *1.5.0* | -| :green_heart: | [Blue F407VET6 Mini](https://stm32-base.org/boards/STM32F407VET6-VCC-GND-Small) | *1.4.0* | | -| :green_heart: | Core Board F401RC | *1.7.0* | | -| :green_heart: | [DIYMORE STM32F407VGT](https://stm32-base.org/boards/STM32F407VGT6-diymore) | *1.5.0* | | -| :green_heart: | FK407M1 | *1.5.0* | | -| :green_heart: | Generic F401R(B-C-D-E) | *1.8.0* | | - -| Status | Generic STM32L0xx | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [PX-HER0](https://piconomix.com/fwlib/_p_i_c_o_n_o_m_i_x__s_t_m32__h_e_r_o__b_o_a_r_d.html) | *1.8.0* | | -| :green_heart: | [ThunderPack](https://github.com/jgillick/ThunderPack) | *1.8.0* | | - -| Status | 3D printer boards | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [ARMED V1](https://github.com/ktand/Armed) | *1.5.0* | | -| :green_heart: | [EExtruder F030 V1](https://github.com/ghent360/PrntrBoard/tree/tmc2130-redesign/EExtruder) | *1.5.0* | Small companion board for Prntr Board V1 | -| :green_heart: | [Malyan M200 V1](http://malyansys.com/product/m200-v1/) | *1.5.0* | | -| :green_heart: | [Malyan M200 V2](http://malyansys.com/product/m200-v2/) | *1.5.0* | | -| :green_heart: | [Malyan M300](http://malyansys.com/product/m300/) | *1.8.0* | | -| :green_heart: | [Prntr Board V1](https://github.com/ghent360/PrntrBoard) | *1.5.0* | | -| :green_heart: | [Prntr Board V2](https://github.com/ghent360/PrntrBoardV2) | *1.8.0* | | -| :green_heart: | [RemRam v1](https://github.com/hasenbanck/remram) | *1.4.0* | | -| :green_heart: | [RUMBA32](https://github.com/Aus3D/RUMBA32) | *1.5.0* | | -| :green_heart: | [STEVAL-3DP001V1](https://www.st.com/en/evaluation-tools/steval-3dp001v1.html) | *1.6.0* | | -| :green_heart: | [VAkE v1.0](https://www.facebook.com/pages/category/Product-Service/VAkE-Board-2290066274575218/) | *1.6.0* | | - -| Status | LoRa boards | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [RAK811 LoRa Tracker](https://www.rakwireless.com/en/) | *1.4.0* | Basic support | -| :green_heart: | [RHF76-052](https://www.ai-thinker.com/) | *1.7.0* | Basic support | - -| Status | Electronic Speed Controller boards | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | Wraith V1 ESC | *1.8.0* | | - -| Status | Generic flight controllers | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | Afro Flight Rev5 (8/12MHz) | *1.7.0* | | -| :green_heart: | [Sparky V1](https://github.com/TauLabs/TauLabs/wiki/Sparky) | *1.6.0* | | - -| Status | [Midatronics](https://midatronics.com/) | Release | Comment | -| :---: | --- | :---: | :--- | -| :green_heart: | [SharkyMKR](https://midatronics.com/Development_Boards/MKR_Sharky_I) | *1.7.0* | | +## Supported boards + + - [Nucleo 144 boards](#nucleo-144-boards) + - [Nucleo 64 boards](#nucleo-64-boards) + - [Nucleo 32 boards](#nucleo-32-boards) + - [Discovery boards](#discovery-boards) + - [Eval boards](#eval-boards) + - [STM32MP1 series coprocessor boards](#stm32mp1-series-coprocessor-boards) + - [Generic STM32F0 boards](#generic-stm32f0-boards) + - [Generic STM32F1 boards](#generic-stm32f1-boards) + - [Generic STM32F3 boards](#generic-stm32f3-boards) + - [Generic STM32F4 boards](#generic-stm32f4-boards) + - [Generic STM32H7 boards](#generic-stm32h7-boards) + - [Generic STM32L0 boards](#generic-stm32l0-boards) + - [3D printer boards](#3d-printer-boards) + - [LoRa boards](#lora-boards) + - [Electronic Speed Controller boards](#electronic-speed-controller-boards) + - [Generic flight controllers](#generic-flight-controllers) + - [Garatronics boards](#Garatronic/McHobby-boards) + - [Midatronics boards](#midatronics-boards) + + +### [Nucleo 144](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F207ZG | [Nucleo F207ZG](http://www.st.com/en/evaluation-tools/nucleo-f207zg.html) | *0.2.0* | | +| :green_heart: | STM32F429ZI | [Nucleo F429ZI](http://www.st.com/en/evaluation-tools/nucleo-f429zi.html) | *0.1.0* | | +| :green_heart: | STM32F767ZI | [Nucleo F767ZI](http://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | *1.4.0* | | +| :green_heart: | STM32F746ZG | [Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) | *1.9.0* | | +| :green_heart: | STM32F756ZG | [Nucleo F756ZG](https://www.st.com/en/evaluation-tools/nucleo-f756zg.html) | *1.9.0* | | +| :green_heart: | STM32L496ZG | [Nucleo L496ZG](http://www.st.com/en/evaluation-tools/nucleo-l496zg.html) | *1.3.0* | | +| :green_heart: | STM32L496ZG-P | [Nucleo L496ZG-P](http://www.st.com/en/evaluation-tools/nucleo-l496zg-p.html) | *1.3.0* | | +| :green_heart: | STM32L4R5ZI | [Nucleo L4R5ZI](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html) | *1.4.0* | | +| :green_heart: | STM32L4R5ZI-P | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | | +| :green_heart: | STM32H743ZI | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 | + +### [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F030R8 | [Nucleo F030R8](http://www.st.com/en/evaluation-tools/nucleo-f030r8.html) | *0.2.0* | | +| :green_heart: | STM32F072RB | [Nucleo F072RB](http://www.st.com/en/evaluation-tools/nucleo-f072rb.html) | *1.9.0* | | +| :green_heart: | STM32F091RC | [Nucleo F091RC](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | *0.1.0* | | +| :green_heart: | STM32F103RB | [Nucleo F103RB](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | *0.2.0* | | +| :green_heart: | STM32F302R8 | [Nucleo F302R8](http://www.st.com/en/evaluation-tools/nucleo-f302r8.html) | *1.1.0* | | +| :green_heart: | STM32F303RE | [Nucleo F303RE](http://www.st.com/en/evaluation-tools/nucleo-f303re.html) | *0.1.0* | | +| :green_heart: | STM32F401RE | [Nucleo F401RE](http://www.st.com/en/evaluation-tools/nucleo-f401re.html) | *0.2.1* | | +| :green_heart: | STM32F411RE | [Nucleo F411RE](http://www.st.com/en/evaluation-tools/nucleo-f411re.html) | *0.2.1* | | +| :green_heart: | STM32F446RE | [Nucleo F446RE](http://www.st.com/en/evaluation-tools/nucleo-f446re.html) | *1.1.1* | | +| :green_heart: | STM32G071RB | [Nucleo G071RB](https://www.st.com/en/evaluation-tools/nucleo-g071rb.html) | *1.6.0* | | +| :green_heart: | STM32G431RB | [Nucleo G431RB](https://www.st.com/en/evaluation-tools/nucleo-g431rb.html) | *1.7.0* | | +| :green_heart: | STM32G474RE | [Nucleo G474RE](https://www.st.com/en/evaluation-tools/nucleo-g474re.html) | *1.7.0* | | +| :green_heart: | STM32L053R8 | [Nucleo L053R8](http://www.st.com/en/evaluation-tools/nucleo-l053r8.html) | *0.1.0* | | +| :green_heart: | STM32L073RZ | [Nucleo L073RZ](http://www.st.com/en/evaluation-tools/nucleo-l073rz.html) | *1.4.0* | | +| :green_heart: | STM32L152RE | [Nucleo L152RE](http://www.st.com/en/evaluation-tools/nucleo-l152re.html) | *1.0.0* | | +| :green_heart: | STM32L433RC-P | [Nucleo L433RC-P](https://www.st.com/en/evaluation-tools/nucleo-l433rc-p.html) | *1.9.0* | | +| :green_heart: | STM32L452RE | [Nucleo L452RE](http://www.st.com/en/evaluation-tools/nucleo-l452re.html) | *1.5.0* | | +| :green_heart: | STM32L452RE-P | [Nucleo L452RE-P](http://www.st.com/en/evaluation-tools/nucleo-l452re-p.html) | *1.8.0* | | +| :green_heart: | STM32L476RG | [Nucleo L476RG](http://www.st.com/en/evaluation-tools/nucleo-l476rg.html) | *0.1.0* | | +| :green_heart: | STM32WB55RG
STM32WB55CG | [P-Nucleo-WB55RG](https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html) | *1.6.0* | No BLE support | + +### [Nucleo 32](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F031K6 | [Nucleo F031K6](https://www.st.com/en/evaluation-tools/nucleo-f031k6.html) | *1.9.0* | | +| :green_heart: | STM32F303K8 | [Nucleo F303K8](http://www.st.com/en/evaluation-tools/nucleo-f303k8.html) | *1.1.0* | | +| :green_heart: | STM32G431KB | [Nucleo G431KB](https://www.st.com/en/evaluation-tools/nucleo-g431kb.html) | *1.7.0* | | +| :green_heart: | STM32L031K6 | [Nucleo L031K6](http://www.st.com/en/evaluation-tools/nucleo-l031k6.html) | *1.1.1* | | +| :green_heart: | STM32L412KB | [Nucleo L412KB](http://www.st.com/en/evaluation-tools/nucleo-l412kb.html) | *1.5.0* | | +| :green_heart: | STM32L432KC | [Nucleo L432KC](http://www.st.com/en/evaluation-tools/nucleo-l432kc.html) | *0.2.0* | | + +### [Discovery](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-discovery-kits.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F030R8 | [32F0308DISCOVERY](http://www.st.com/en/evaluation-tools/32f0308discovery.html) | *1.3.0* | | +| :green_heart: | STM32F072RB | [32F072BDISCOVERY](https://www.st.com/en/evaluation-tools/32f072bdiscovery.html) | *1.5.0* | | +| :green_heart: | STM32F100RB | [STM32VLDISCOVERY](https://www.st.com/en/evaluation-tools/stm32vldiscovery.html) | 0.2.1 | | +| :green_heart: | STM32F407VG | [STM32F407G-DISC1](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) | *0.1.0* | | +| :green_heart: | STM32F746NG | [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | *0.1.0* | | +| :green_heart: | STM32G031J6 | [STM32G0316-DISCO](https://www.st.com/en/evaluation-tools/stm32g0316-disco.html) | *1.9.0* | | +| :green_heart: | STM32L072CZ | [B-L072Z-LRWAN1](http://www.st.com/en/evaluation-tools/b-l072z-lrwan1.html) | *1.1.0* | | +| :green_heart: | STM32L475VG | [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | *1.0.1* | | +| :green_heart: | STM32F413ZH | [32F413HDISCOVERY](https://www.st.com/en/evaluation-tools/32f413hdiscovery.html) | *1.9.0* | | +| :yellow_heart: | STM32L4S5VI | [B-L4S5I-IOT01A](https://www.st.com/en/evaluation-tools/b-l4s5i-iot01a.html) | **2.0.0** | | + +### [Eval](https://www.st.com/en/evaluation-tools/stm32-eval-boards.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32L4R9ZI | [STEVAL-MKSBOX1V1 (SensorTile.box)](https://www.st.com/en/evaluation-tools/steval-mksbox1v1.html) | *1.7.0* | | + +### [STM32MP1 series coprocessor](https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-arm-cortex-mpus/stm32mp1-series.html) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32MP157A | [STM32MP157A-DK1](https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html) | *1.8.0* | See [the documentation](https://github.com/stm32duino/Arduino_Core_STM32/tree/master/variants/STM32MP157_DK/README.md) to use this board| +| :green_heart: | STM32MP157C | [STM32MP157C-DK2](https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html) | *1.8.0* | See [the documentation](https://github.com/stm32duino/Arduino_Core_STM32/tree/master/variants/STM32MP157_DK/README.md) to use this board| + +### Generic STM32F0 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F030F4 | [STM32F030F4 Demo board](https://stm32-base.org/boards/STM32F030F4P6-STM32F030-DEMO-BOARD-V1.1) | *1.5.0* | | + +### Generic STM32F1 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F103C6
STM32F103C8
STM32F103CB | [Blue Pill](https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill) | *1.2.0* | USB CDC support since *1.5.0*
Maple bootloaders support since *1.6.0* | +| :green_heart: | STM32F103C8
STM32F103CB | [Black Pill](https://stm32-base.org/boards/STM32F103C8T6-Black-Pill) | *1.5.0* | | +| :green_heart: | STM32F103C4
STM32F103C6
STM32F103C8
STM32F103CB | Generic Board | *1.9.0* | | +| :green_heart: | STM32F103R6
STM32F103R8
STM32F103RB
STM32F103RC
STM32F103RD
STM32F103RE
STM32F103RF
STM32F103RG | [Generic Board](https://stm32-base.org/boards/STM32F103RET6-Generic-Board) | *1.9.0* | | +| :green_heart: | STM32F103T4
STM32F103T6
STM32F103T8
STM32F103TB | Generic Board | *1.9.0* | | +| :green_heart: | STM32F103V8
STM32F103VB
STM32F103VC
STM32F103VD
STM32F103VE
STM32F103VF
STM32F103VG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F103ZC
STM32F103ZD
STM32F103ZE
STM32F103ZF
STM32F103ZG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F103TB | HY-TinySTM103T | *1.5.0* | [More info](https://www.hotmcu.com/stm32f103tb-arm-cortex-m3-development-board-p-222.html) | +| :green_heart: | STM32F103CB | Maple Mini | *1.2.0* | [More info](https://www.leaflabs.com/maple)
USB CDC support since *1.5.0*
Maple bootloaders support since *1.6.0* | +| :green_heart: | STM32F103ZE | [vcc-gnd.com](https://stm32-base.org/boards/STM32F103ZET6-VCC-GND-XLarge) | *1.9.0* | [More info](http://www.vcc-gnd.com/rtd/html/STM32/quickref.html#stm32f1) | +| :green_heart: | STM32F103ZE | vcc-gnd.com Mini | *1.9.0* | [More info](http://www.vcc-gnd.com/rtd/html/STM32/quickref.html#stm32f1) | + +### Generic STM32F3 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F303CC | [RobotDyn Black Pill](https://stm32-base.org/boards/STM32F303CCT6-RobotDyn-Black-Pill) | *1.6.1* | [More info](https://robotdyn.com/catalog/development-boards/stm-boards-and-shields.html) | + +### Generic STM32F4 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F405RG | [Adafruit Feather STM32F405 Express](https://www.adafruit.com/product/4382) | *1.8.0* | | +| :green_heart: | STM32F401CC | [WeAct Black Pill](https://stm32-base.org/boards/STM32F401CCU6-WeAct-Black-Pill-V1.2) | *1.7.0* | [More info](https://github.com/WeActTC/MiniF4-STM32F4x1) | +| :green_heart: | STM32F411CE | [WeAct Black Pill](https://stm32-base.org/boards/STM32F411CEU6-WeAct-Black-Pill-V2.0) | *1.9.0* | [More info](https://github.com/WeActTC/MiniF4-STM32F4x1) | +| :green_heart: | STM32F407VE
STM32F407VG | [STM32 F4VE / Black F407VET6](https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0) | *1.4.0* | STM32F407VG support since *1.5.0* | +| :green_heart: | STM32F407ZE
STM32F407ZG | Black F407ZE / Black F407ZG | *1.5.0* | | +| :green_heart: | STM32F407VE | [vcc-gnd.com Mini](https://stm32-base.org/boards/STM32F407VET6-VCC-GND-Small) | *1.4.0* | [More info](http://vcc-gnd.com/rtd/html/STM32/quickref.html#stm32f4) | +| :green_heart: | STM32F401RC | [STM32F Core Board](https://stm32-base.org/boards/STM32F401RCT6-STM32F-Core-Board) | *1.7.0* | | +| :green_heart: | STM32F407VG | [DIYMORE STM32F407VGT](https://stm32-base.org/boards/STM32F407VGT6-diymore) | *1.5.0* | | +| :green_heart: | STM32F407VE | [FK407M1](https://stm32-base.org/boards/STM32F407VET6-FK407M1-V1.0) | *1.5.0* | | +| :green_heart: | STM32F401CB
STM32F401CC
STM32F401CD
STM32F401CE | Generic Board | *1.9.0* | | +| :green_heart: | STM32F401RB
STM32F401RC
STM32F401RD
STM32F401RE | Generic Board | *1.8.0* | | +| :green_heart: | STM32F405RG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F407VE
STM32F407VG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F407Zx
STM32F407Zx | Generic Board | *1.9.0* | | +| :green_heart: | STM32F407Zx
STM32F407Zx | vcc-gnd.com Mini | *1.9.0* | [More info](http://www.vcc-gnd.com/rtd/html/STM32/quickref.html#stm32f4) | +| :green_heart: | STM32F410C8
STM32F410CB | Generic Board | *1.9.0* | | +| :green_heart: | STM32F410R8
STM32F410RB | Generic Board | *1.9.0* | | +| :green_heart: | STM32F411CC
STM32F411CE | Generic Board | *1.9.0* | | +| :green_heart: | STM32F411RC
STM32F411RE | Generic Board | *1.9.0* | | +| :green_heart: | STM32F412CE
STM32F412CG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F412RE
STM32F412RG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F413CG
STM32F413CH | Generic Board | *1.9.0* | | +| :green_heart: | STM32F413RG
STM32F413RH | Generic Board | *1.9.0* | | +| :green_heart: | STM32F415RG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F417VE
STM32F417VG | Generic Board | *1.9.0* | | +| :green_heart: | STM32F423CH | Generic Board | *1.9.0* | | +| :green_heart: | STM32F423RH | Generic Board | *1.9.0* | | +| :green_heart: | STM32F446RC
STM32F446RE | Generic Board | *1.9.0* | | +| :green_heart: | STM32F411CE | [ThunderPack v1.1+](https://github.com/jgillick/ThunderPack) | *1.9.0* | | + +### Generic STM32H7 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32H750IB | [Daisy ](https://www.electro-smith.com/daisy/daisy) | *1.9.0* | | + +### Generic STM32L0 boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32L072RB | [PX-HER0](https://piconomix.com/fwlib/_p_i_c_o_n_o_m_i_x__s_t_m32__h_e_r_o__b_o_a_r_d.html) | *1.8.0* | | +| :green_heart: | STM32L072KZ | [ThunderPack v1.0](https://github.com/jgillick/ThunderPack) | *1.8.0* | | + +### 3D printer boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F407VE | [ARMED V1](https://github.com/ktand/Armed) | *1.5.0* | | +| :green_heart: | STM32F030 | [EExtruder F030 V1](https://github.com/ghent360/PrntrBoard/tree/tmc2130-redesign/EExtruder) | *1.5.0* | Small companion board for Prntr Board V1 | +| :green_heart: | STM32F103C8 | [Malyan M200 V1](http://malyansys.com/product/m200-v1/) | *1.5.0* | | +| :green_heart: | STM32F070C8 | [Malyan M200 V2](http://malyansys.com/product/m200-v2/) | *1.5.0* | | +| :green_heart: | STM32F070C8 | [Malyan M300](http://malyansys.com/product/m300/) | *1.8.0* | | +| :green_heart: | STM32F407VE | [Prntr Board V1](https://github.com/ghent360/PrntrBoard) | *1.5.0* | | +| :green_heart: | STM32F407VE | [Prntr Board V2](https://github.com/ghent360/PrntrBoardV2) | *1.8.0* | | +| :green_heart: | STM32F765VI | [RemRam v1](https://github.com/hasenbanck/remram) | *1.4.0* | | +| :green_heart: | STM32F446VE | [RUMBA32](https://github.com/Aus3D/RUMBA32) | *1.5.0* | | +| :green_heart: | STM32F401VE | [STEVAL-3DP001V1](https://www.st.com/en/evaluation-tools/steval-3dp001v1.html) | *1.6.0* | | +| :green_heart: | STM32F446RE | [VAkE v1.0](https://www.facebook.com/pages/category/Product-Service/VAkE-Board-2290066274575218/) | *1.6.0* | | +| :green_heart: | STM32F446VE | [FYSETC_S6](https://wiki.fysetc.com/FYSETC_S6/) | *1.9.0* | | + +### LoRa boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F072C8
STM32F072CB | [Elektor LoRa Node](https://github.com/ElektorLabs/180516-Elektor_LoRa_Node) | *1.8.0* | [More info](https://www.elektormagazine.com/labs/lorawan-node-experimental-platform) | +| :green_heart: | STM32L151RB | [RAK811 LoRa Tracker](https://www.rakwireless.com/en/) | *1.4.0* | [Wiki](https://github.com/stm32duino/wiki/wiki/Connectivities#lora) | +| :green_heart: | STM32L052C8 | [RHF76-052](https://www.ai-thinker.com/) | *1.7.0* | Basic support | + +### Electronic Speed Controller boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F051K6 | Wraith V1 ESC | *1.8.0* | | + +### Generic flight controllers + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F103CB | Afro Flight Rev5 (8/12MHz) | *1.7.0* | | +| :green_heart: | STM32F303CC | [Sparky V1](https://github.com/TauLabs/TauLabs/wiki/Sparky) | *1.6.0* | | + +### [Garatronic](https://www.garatronic.fr)/[McHobby](https://shop.mchobby.be) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32F072RB | [PYBStick 26 Duino](https://shop.mchobby.be/fr/compatibles-arduino/1851-pybstick-duino-arduino-uniquement-3232100018518-garatronic.html) | *1.9.0* | [More info](https://github.com/mchobby/pyboard-driver/tree/master/PYBStick) | +| :green_heart: | STM32F401CE | [PYBStick 26 Lite](https://shop.mchobby.be/fr/micropython/1830-pybstick-lite-26-micropython-et-arduino-3232100018303-garatronic.html) | *1.9.0* | [More info](https://github.com/mchobby/pyboard-driver/tree/master/PYBStick) | +| :green_heart: | STM32F411RE | [PYBStick 26 Standard](https://shop.mchobby.be/fr/micropython/1844-pybstick-standard-26-micropython-et-arduino-3232100018440-garatronic.html) | *1.9.0* | [More info](https://github.com/mchobby/pyboard-driver/tree/master/PYBStick) | +| :green_heart: | STM32F412RE | [PYBStick 26 Pro](https://shop.mchobby.be/fr/micropython/1850-pybstick-pro-26-micropython-et-arduino-3232100018501-garatronic.html) | *1.9.0* | [More info](https://github.com/mchobby/pyboard-driver/tree/master/PYBStick) | + +### [Midatronics](https://midatronics.com/) boards + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :green_heart: | STM32WB55CG | [SharkyMKR](https://midatronics.com/shop/development-boards/mkr-sharky-i/) | *1.7.0* | | ## Next release - See [milestones](https://github.com/stm32duino/Arduino_Core_STM32/milestones) to have an overview of the next release content. +See [milestones](https://github.com/stm32duino/Arduino_Core_STM32/milestones) to have an overview of the next release content. ## Troubleshooting -If you have any issue, you could [file an issue on Github](https://github.com/stm32duino/Arduino_Core_STM32/issues/new). +For question, support, ..., you could submit a topic on the [stm32duino forum](http://stm32duino.com). -For question, support, ..., you could submit a topic on the [stm32duino forum](http://stm32duino.com): +If you have any issue, you could [file an issue on Github](https://github.com/stm32duino/Arduino_Core_STM32/issues/new). In any case, it always fine to search if your issue was not already existing before submit a new one. diff --git a/boards.txt b/boards.txt index ab3b11e36e..2548ab0050 100644 --- a/boards.txt +++ b/boards.txt @@ -1,10 +1,11 @@ -# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification +# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification menu.pnum=Board part number menu.xserial=U(S)ART support menu.usb=USB support (if available) menu.xusb=USB speed (if available) +menu.virtio=Virtual serial support menu.opt=Optimize menu.rtlib=C Runtime Library @@ -15,7 +16,6 @@ menu.upload_method=Upload method Nucleo_144.name=Nucleo-144 -Nucleo_144.build.vid=0x0483 Nucleo_144.build.core=arduino Nucleo_144.build.board=Nucleo_144 Nucleo_144.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -38,7 +38,7 @@ Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.cmsis_lib_gcc=arm_cortexM3l_math Nucleo_144.menu.pnum.NUCLEO_F429ZI=Nucleo F429ZI Nucleo_144.menu.pnum.NUCLEO_F429ZI.node=NODE_F429ZI Nucleo_144.menu.pnum.NUCLEO_F429ZI.upload.maximum_size=2097152 -Nucleo_144.menu.pnum.NUCLEO_F429ZI.upload.maximum_data_size=262144 +Nucleo_144.menu.pnum.NUCLEO_F429ZI.upload.maximum_data_size=196608 Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.mcu=cortex-m4 Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.board=NUCLEO_F429ZI @@ -47,6 +47,32 @@ Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.product_line=STM32F429xx Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.variant=NUCLEO_F429ZI Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.cmsis_lib_gcc=arm_cortexM4lf_math +# NUCLEO_F746ZG board +Nucleo_144.menu.pnum.NUCLEO_F746ZG=Nucleo F746ZG +Nucleo_144.menu.pnum.NUCLEO_F746ZG.node=NODE_F746ZG +Nucleo_144.menu.pnum.NUCLEO_F746ZG.upload.maximum_size=1048576 +Nucleo_144.menu.pnum.NUCLEO_F746ZG.upload.maximum_data_size=327680 +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.mcu=cortex-m7 +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.board=NUCLEO_F746ZG +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.series=STM32F7xx +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.product_line=STM32F746xx +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.variant=NUCLEO_F7x6ZG +Nucleo_144.menu.pnum.NUCLEO_F746ZG.build.cmsis_lib_gcc=arm_cortexM7lfsp_math + +# NUCLEO_F756ZG board +Nucleo_144.menu.pnum.NUCLEO_F756ZG=Nucleo F756ZG +Nucleo_144.menu.pnum.NUCLEO_F756ZG.node=NODE_F756ZG +Nucleo_144.menu.pnum.NUCLEO_F756ZG.upload.maximum_size=1048576 +Nucleo_144.menu.pnum.NUCLEO_F756ZG.upload.maximum_data_size=327680 +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.mcu=cortex-m7 +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.board=NUCLEO_F756ZG +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.series=STM32F7xx +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.product_line=STM32F756xx +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.variant=NUCLEO_F7x6ZG +Nucleo_144.menu.pnum.NUCLEO_F756ZG.build.cmsis_lib_gcc=arm_cortexM7lfsp_math + # NUCLEO_F767ZI board Nucleo_144.menu.pnum.NUCLEO_F767ZI=Nucleo F767ZI Nucleo_144.menu.pnum.NUCLEO_F767ZI.node=NODE_F767ZI @@ -162,7 +188,6 @@ Nucleo_144.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg Nucleo_64.name=Nucleo-64 -Nucleo_64.build.vid=0x0483 Nucleo_64.build.core=arduino Nucleo_64.build.board=Nucleo_64 Nucleo_64.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -179,6 +204,18 @@ Nucleo_64.menu.pnum.NUCLEO_F030R8.build.product_line=STM32F030x8 Nucleo_64.menu.pnum.NUCLEO_F030R8.build.variant=NUCLEO_F030R8 Nucleo_64.menu.pnum.NUCLEO_F030R8.build.cmsis_lib_gcc=arm_cortexM0l_math +# NUCLEO_F072RB board +Nucleo_64.menu.pnum.NUCLEO_F072RB=Nucleo F072RB +Nucleo_64.menu.pnum.NUCLEO_F072RB.node="NODE_F072RB,NUCLEO" +Nucleo_64.menu.pnum.NUCLEO_F072RB.upload.maximum_size=131072 +Nucleo_64.menu.pnum.NUCLEO_F072RB.upload.maximum_data_size=16384 +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.mcu=cortex-m0 +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.board=NUCLEO_F072RB +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.series=STM32F0xx +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.product_line=STM32F072xB +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.variant=NUCLEO_F072RB +Nucleo_64.menu.pnum.NUCLEO_F072RB.build.cmsis_lib_gcc=arm_cortexM0l_math + # NUCLEO_F091RC board Nucleo_64.menu.pnum.NUCLEO_F091RC=Nucleo F091RC Nucleo_64.menu.pnum.NUCLEO_F091RC.node=NODE_F091RC @@ -239,7 +276,7 @@ Nucleo_64.menu.pnum.NUCLEO_F401RE.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=h Nucleo_64.menu.pnum.NUCLEO_F401RE.build.board=NUCLEO_F401RE Nucleo_64.menu.pnum.NUCLEO_F401RE.build.series=STM32F4xx Nucleo_64.menu.pnum.NUCLEO_F401RE.build.product_line=STM32F401xE -Nucleo_64.menu.pnum.NUCLEO_F401RE.build.variant=NUCLEO_F401RE +Nucleo_64.menu.pnum.NUCLEO_F401RE.build.variant=NUCLEO_F4x1RE Nucleo_64.menu.pnum.NUCLEO_F401RE.build.cmsis_lib_gcc=arm_cortexM4lf_math # NUCLEO_F411RE board @@ -252,7 +289,7 @@ Nucleo_64.menu.pnum.NUCLEO_F411RE.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=h Nucleo_64.menu.pnum.NUCLEO_F411RE.build.board=NUCLEO_F411RE Nucleo_64.menu.pnum.NUCLEO_F411RE.build.series=STM32F4xx Nucleo_64.menu.pnum.NUCLEO_F411RE.build.product_line=STM32F411xE -Nucleo_64.menu.pnum.NUCLEO_F411RE.build.variant=NUCLEO_F411RE +Nucleo_64.menu.pnum.NUCLEO_F411RE.build.variant=NUCLEO_F4x1RE Nucleo_64.menu.pnum.NUCLEO_F411RE.build.cmsis_lib_gcc=arm_cortexM4lf_math # NUCLEO_F446RE board @@ -345,6 +382,19 @@ Nucleo_64.menu.pnum.NUCLEO_L152RE.build.product_line=STM32L152xE Nucleo_64.menu.pnum.NUCLEO_L152RE.build.variant=NUCLEO_L152RE Nucleo_64.menu.pnum.NUCLEO_L152RE.build.cmsis_lib_gcc=arm_cortexM3l_math +# NUCLEO_L433RC_P board +Nucleo_64.menu.pnum.NUCLEO_L433RC_P=Nucleo L433RC-P +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.node=NODE_L433RC +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.upload.maximum_size=1048576 +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.upload.maximum_data_size=98304 +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.mcu=cortex-m4 +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.board=NUCLEO_L433RC +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.series=STM32L4xx +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.product_line=STM32L433xx +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.variant=NUCLEO_L433RC_P +Nucleo_64.menu.pnum.NUCLEO_L433RC_P.build.cmsis_lib_gcc=arm_cortexM4lf_math + # NUCLEO_L452RE board Nucleo_64.menu.pnum.NUCLEO_L452RE=Nucleo L452RE Nucleo_64.menu.pnum.NUCLEO_L452RE.node=NODE_L452RE @@ -387,7 +437,7 @@ Nucleo_64.menu.pnum.NUCLEO_L476RG.build.cmsis_lib_gcc=arm_cortexM4lf_math # PNUCLEO_WB55RG board Nucleo_64.menu.pnum.PNUCLEO_WB55RG=P-Nucleo WB55RG -Nucleo_64.menu.pnum.PNUCLEO_WB55RG.node=NODE_WB55RG +Nucleo_64.menu.pnum.PNUCLEO_WB55RG.node="NODE_WB55RG,NOD_WB55RG" Nucleo_64.menu.pnum.PNUCLEO_WB55RG.upload.maximum_size=524288 Nucleo_64.menu.pnum.PNUCLEO_WB55RG.upload.maximum_data_size=196604 Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.mcu=cortex-m4 @@ -423,11 +473,22 @@ Nucleo_64.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg Nucleo_32.name=Nucleo-32 -Nucleo_32.build.vid=0x0483 Nucleo_32.build.core=arduino Nucleo_32.build.board=Nucleo_32 Nucleo_32.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} +# NUCLEO_F031K6 board +Nucleo_32.menu.pnum.NUCLEO_F031K6=Nucleo F031K6 +Nucleo_32.menu.pnum.NUCLEO_F031K6.node=NODE_F031K6 +Nucleo_32.menu.pnum.NUCLEO_F031K6.upload.maximum_size=32768 +Nucleo_32.menu.pnum.NUCLEO_F031K6.upload.maximum_data_size=4096 +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.mcu=cortex-m0 +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.board=NUCLEO_F031K6 +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.series=STM32F0xx +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.product_line=STM32F031x6 +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.variant=NUCLEO_F031K6 +Nucleo_32.menu.pnum.NUCLEO_F031K6.build.cmsis_lib_gcc=arm_cortexM0l_math + # NUCLEO_L031K6 board Nucleo_32.menu.pnum.NUCLEO_L031K6=Nucleo L031K6 Nucleo_32.menu.pnum.NUCLEO_L031K6.node=NODE_L031K6 @@ -517,7 +578,6 @@ Nucleo_32.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg Disco.name=Discovery -Disco.build.vid=0x0483 Disco.build.core=arduino Disco.build.board=Disco Disco.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -562,7 +622,7 @@ Disco.menu.pnum.DISCO_F100RB.build.cmsis_lib_gcc=arm_cortexM3l_math Disco.menu.pnum.DISCO_F407VG=STM32F407G-DISC1 Disco.menu.pnum.DISCO_F407VG.node=DIS_F407VG Disco.menu.pnum.DISCO_F407VG.upload.maximum_size=1048576 -Disco.menu.pnum.DISCO_F407VG.upload.maximum_data_size=196608 +Disco.menu.pnum.DISCO_F407VG.upload.maximum_data_size=131072 Disco.menu.pnum.DISCO_F407VG.build.mcu=cortex-m4 Disco.menu.pnum.DISCO_F407VG.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard Disco.menu.pnum.DISCO_F407VG.build.board=DISCO_F407VG @@ -571,6 +631,19 @@ Disco.menu.pnum.DISCO_F407VG.build.product_line=STM32F407xx Disco.menu.pnum.DISCO_F407VG.build.variant=DISCO_F407VG Disco.menu.pnum.DISCO_F407VG.build.cmsis_lib_gcc=arm_cortexM4lf_math +# DISCO_F413ZH board +Disco.menu.pnum.DISCO_F413ZH=STM32F413H-DISCO +Disco.menu.pnum.DISCO_F413ZH.node=DIS_F413ZH +Disco.menu.pnum.DISCO_F413ZH.upload.maximum_size=1572864 +Disco.menu.pnum.DISCO_F413ZH.upload.maximum_data_size=327680 +Disco.menu.pnum.DISCO_F413ZH.build.mcu=cortex-m4 +Disco.menu.pnum.DISCO_F413ZH.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +Disco.menu.pnum.DISCO_F413ZH.build.board=DISCO_F413ZH +Disco.menu.pnum.DISCO_F413ZH.build.series=STM32F4xx +Disco.menu.pnum.DISCO_F413ZH.build.product_line=STM32F413xx +Disco.menu.pnum.DISCO_F413ZH.build.variant=DISCO_F413ZH +Disco.menu.pnum.DISCO_F413ZH.build.cmsis_lib_gcc=arm_cortexM4lf_math + # DISCO_F746NG board Disco.menu.pnum.DISCO_F746NG=STM32F746G-DISCOVERY Disco.menu.pnum.DISCO_F746NG.node=DIS_F746NG @@ -584,6 +657,19 @@ Disco.menu.pnum.DISCO_F746NG.build.product_line=STM32F746xx Disco.menu.pnum.DISCO_F746NG.build.variant=DISCO_F746NG Disco.menu.pnum.DISCO_F746NG.build.cmsis_lib_gcc=arm_cortexM7lfsp_math +# DISCO_G0316 board +Disco.menu.pnum.DISCO_G0316=STM32G0316-DISCO +Disco.menu.pnum.DISCO_G0316.node=NODE_G031J6 +Disco.menu.pnum.DISCO_G0316.upload.maximum_size=131072 +Disco.menu.pnum.DISCO_G0316.upload.maximum_data_size=32768 +Disco.menu.pnum.DISCO_G0316.build.mcu=cortex-m0plus +Disco.menu.pnum.DISCO_G0316.build.board=DISCO_G0316 +Disco.menu.pnum.DISCO_G0316.build.series=STM32G0xx +Disco.menu.pnum.DISCO_G0316.build.product_line=STM32G031xx +Disco.menu.pnum.DISCO_G0316.build.variant=DISCO_G0316 +Disco.menu.pnum.DISCO_G0316.build.cmsis_lib_gcc=arm_cortexM0l_math +Disco.menu.pnum.DISCO_G0316.build.extra_flags=-D{build.product_line} {build.xSerial} -D__CORTEX_SC=0 + # DISCO_L475VG_IOT board Disco.menu.pnum.DISCO_L475VG_IOT=STM32L475VG-DISCOVERY-IOT Disco.menu.pnum.DISCO_L475VG_IOT.node=DIS_L4IOT @@ -597,6 +683,19 @@ Disco.menu.pnum.DISCO_L475VG_IOT.build.product_line=STM32L475xx Disco.menu.pnum.DISCO_L475VG_IOT.build.variant=DISCO_L475VG_IOT Disco.menu.pnum.DISCO_L475VG_IOT.build.cmsis_lib_gcc=arm_cortexM4lf_math +# B_L4S5I_IOT01A board +Disco.menu.pnum.B_L4S5I_IOT01A=B-L4S5I-IOT01A +Disco.menu.pnum.B_L4S5I_IOT01A.node="DIS_L4IOT,DIS_L4S5VI" +Disco.menu.pnum.B_L4S5I_IOT01A.upload.maximum_size=2097152 +Disco.menu.pnum.B_L4S5I_IOT01A.upload.maximum_data_size=655360 +Disco.menu.pnum.B_L4S5I_IOT01A.build.mcu=cortex-m4 +Disco.menu.pnum.B_L4S5I_IOT01A.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +Disco.menu.pnum.B_L4S5I_IOT01A.build.board=B_L4S5I_IOT01A +Disco.menu.pnum.B_L4S5I_IOT01A.build.series=STM32L4xx +Disco.menu.pnum.B_L4S5I_IOT01A.build.product_line=STM32L4S5xx +Disco.menu.pnum.B_L4S5I_IOT01A.build.variant=B_L4S5I_IOT01A +Disco.menu.pnum.B_L4S5I_IOT01A.build.cmsis_lib_gcc=arm_cortexM4lf_math + # DISCO-L072CZ-LRWAN1 board Disco.menu.pnum.DISCO_L072CZ_LRWAN1=Discovery L072CZ-LRWAN1 Disco.menu.pnum.DISCO_L072CZ_LRWAN1.node="DIS_L072Z,NODE_L072CZ" @@ -635,7 +734,6 @@ Disco.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg Eval.name=Eval -Eval.build.vid=0x0483 Eval.build.core=arduino Eval.build.board=Eval Eval.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -668,14 +766,13 @@ Eval.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg STM32MP1.name=STM32MP1 series coprocessor -STM32MP1.build.vid=0x0483 STM32MP1.build.core=arduino STM32MP1.build.board=STM32MP1 STM32MP1.build.mcu=cortex-m4 STM32MP1.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard STM32MP1.build.series=STM32MP1xx STM32MP1.build.cmsis_lib_gcc=arm_cortexM4l_math -STM32MP1.build.extra_flags=-DCORE_CM4 -DUSE_FULL_LL_DRIVER -D{build.product_line} {build.xSerial} +STM32MP1.build.extra_flags=-DCORE_CM4 -DUSE_FULL_LL_DRIVER -D{build.product_line} {build.enable_virtio} {build.xSerial} # STM32MP157A-DK1 board STM32MP1.menu.pnum.STM32MP157A_DK1=STM32MP157A-DK1 @@ -756,7 +853,6 @@ GenF0.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg # Generic F1 GenF1.name=Generic STM32F1 series -GenF1.build.vid=0x0483 GenF1.build.core=arduino GenF1.build.board=GenF1 GenF1.build.mcu=cortex-m3 @@ -780,12 +876,12 @@ GenF1.menu.pnum.BLUEPILL_F103C8.build.board=BLUEPILL_F103C8 GenF1.menu.pnum.BLUEPILL_F103C8.build.product_line=STM32F103xB GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=PILL_F103XX -GenF1.menu.pnum.BLUEPILL_F103C8B=BluePill F103C8 (128k) -GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_size=131072 -GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_data_size=20480 -GenF1.menu.pnum.BLUEPILL_F103C8B.build.board=BLUEPILL_F103C8 -GenF1.menu.pnum.BLUEPILL_F103C8B.build.product_line=STM32F103xB -GenF1.menu.pnum.BLUEPILL_F103C8B.build.variant=PILL_F103XX +GenF1.menu.pnum.BLUEPILL_F103CB=BluePill F103CB (or C8 with 128k) +GenF1.menu.pnum.BLUEPILL_F103CB.upload.maximum_size=131072 +GenF1.menu.pnum.BLUEPILL_F103CB.upload.maximum_data_size=20480 +GenF1.menu.pnum.BLUEPILL_F103CB.build.board=BLUEPILL_F103CB +GenF1.menu.pnum.BLUEPILL_F103CB.build.product_line=STM32F103xB +GenF1.menu.pnum.BLUEPILL_F103CB.build.variant=PILL_F103XX # BLACKPILL_F103C8 board GenF1.menu.pnum.BLACKPILL_F103C8=BlackPill F103C8 @@ -795,41 +891,235 @@ GenF1.menu.pnum.BLACKPILL_F103C8.build.board=BLACKPILL_F103C8 GenF1.menu.pnum.BLACKPILL_F103C8.build.product_line=STM32F103xB GenF1.menu.pnum.BLACKPILL_F103C8.build.variant=PILL_F103XX -GenF1.menu.pnum.BLACKPILL_F103C8B=BlackPill F103C8 (128k) -GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_size=131072 -GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_data_size=20480 -GenF1.menu.pnum.BLACKPILL_F103C8B.build.board=BLACKPILL_F103C8 -GenF1.menu.pnum.BLACKPILL_F103C8B.build.product_line=STM32F103xB -GenF1.menu.pnum.BLACKPILL_F103C8B.build.variant=PILL_F103XX - -# Generic STM32F103Rx boards (Blue button) -GenF1.menu.pnum.Generic_F103R8T6=Generic F103R8T6 (Blue Button) -GenF1.menu.pnum.Generic_F103R8T6.upload.maximum_size=65536 -GenF1.menu.pnum.Generic_F103R8T6.upload.maximum_data_size=20480 -GenF1.menu.pnum.Generic_F103R8T6.build.board=GENERIC_F103R8T6 -GenF1.menu.pnum.Generic_F103R8T6.build.product_line=STM32F103xB -GenF1.menu.pnum.Generic_F103R8T6.build.variant=Generic_F103Rx - -GenF1.menu.pnum.Generic_F103RBT6=Generic F103RBT6 (Blue Button) -GenF1.menu.pnum.Generic_F103RBT6.upload.maximum_size=131072 -GenF1.menu.pnum.Generic_F103RBT6.upload.maximum_data_size=20480 -GenF1.menu.pnum.Generic_F103RBT6.build.board=GENERIC_F103RBT6 -GenF1.menu.pnum.Generic_F103RBT6.build.product_line=STM32F103xB -GenF1.menu.pnum.Generic_F103RBT6.build.variant=Generic_F103Rx - -GenF1.menu.pnum.Generic_F103RCT6=Generic F103RCT6 (Blue Button) -GenF1.menu.pnum.Generic_F103RCT6.upload.maximum_size=262144 -GenF1.menu.pnum.Generic_F103RCT6.upload.maximum_data_size=49152 -GenF1.menu.pnum.Generic_F103RCT6.build.board=GENERIC_F103RCT6 -GenF1.menu.pnum.Generic_F103RCT6.build.product_line=STM32F103xE -GenF1.menu.pnum.Generic_F103RCT6.build.variant=Generic_F103Rx - -GenF1.menu.pnum.Generic_F103RET6=Generic F103RET6 (Blue Button) -GenF1.menu.pnum.Generic_F103RET6.upload.maximum_size=524288 -GenF1.menu.pnum.Generic_F103RET6.upload.maximum_data_size=65536 -GenF1.menu.pnum.Generic_F103RET6.build.board=GENERIC_F103RET6 -GenF1.menu.pnum.Generic_F103RET6.build.product_line=STM32F103xE -GenF1.menu.pnum.Generic_F103RET6.build.variant=Generic_F103Rx +GenF1.menu.pnum.BLACKPILL_F103CB=BlackPill F103CB (or C8 with 128k) +GenF1.menu.pnum.BLACKPILL_F103CB.upload.maximum_size=131072 +GenF1.menu.pnum.BLACKPILL_F103CB.upload.maximum_data_size=20480 +GenF1.menu.pnum.BLACKPILL_F103CB.build.board=BLACKPILL_F103CB +GenF1.menu.pnum.BLACKPILL_F103CB.build.product_line=STM32F103xB +GenF1.menu.pnum.BLACKPILL_F103CB.build.variant=PILL_F103XX + +# Generic STM32F103Cx boards +GenF1.menu.pnum.Generic_F103C4=Generic F103C4 +GenF1.menu.pnum.Generic_F103C4.upload.maximum_size=16384 +GenF1.menu.pnum.Generic_F103C4.upload.maximum_data_size=6144 +GenF1.menu.pnum.Generic_F103C4.build.board=GENERIC_F103C4 +GenF1.menu.pnum.Generic_F103C4.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103C4.build.variant=Generic_F103Cx + +GenF1.menu.pnum.Generic_F103C6=Generic F103C6 +GenF1.menu.pnum.Generic_F103C6.upload.maximum_size=32768 +GenF1.menu.pnum.Generic_F103C6.upload.maximum_data_size=10240 +GenF1.menu.pnum.Generic_F103C6.build.board=GENERIC_F103C6 +GenF1.menu.pnum.Generic_F103C6.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103C6.build.variant=Generic_F103Cx + +GenF1.menu.pnum.Generic_F103C8=Generic F103C8 +GenF1.menu.pnum.Generic_F103C8.upload.maximum_size=65536 +GenF1.menu.pnum.Generic_F103C8.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103C8.build.board=GENERIC_F103C8 +GenF1.menu.pnum.Generic_F103C8.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103C8.build.variant=Generic_F103Cx + +GenF1.menu.pnum.Generic_F103CB=Generic F103CB +GenF1.menu.pnum.Generic_F103CB.upload.maximum_size=131072 +GenF1.menu.pnum.Generic_F103CB.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103CB.build.board=GENERIC_F103CB +GenF1.menu.pnum.Generic_F103CB.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103CB.build.variant=Generic_F103Cx + +# Generic STM32F103Rx boards +GenF1.menu.pnum.Generic_F103R4=Generic F103R4 +GenF1.menu.pnum.Generic_F103R4.upload.maximum_size=16384 +GenF1.menu.pnum.Generic_F103R4.upload.maximum_data_size=6144 +GenF1.menu.pnum.Generic_F103R4.build.board=GENERIC_F103R4 +GenF1.menu.pnum.Generic_F103R4.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103R4.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103R6=Generic F103R6 +GenF1.menu.pnum.Generic_F103R6.upload.maximum_size=32768 +GenF1.menu.pnum.Generic_F103R6.upload.maximum_data_size=10240 +GenF1.menu.pnum.Generic_F103R6.build.board=GENERIC_F103R6 +GenF1.menu.pnum.Generic_F103R6.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103R6.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103R8=Generic F103R8 +GenF1.menu.pnum.Generic_F103R8.upload.maximum_size=65536 +GenF1.menu.pnum.Generic_F103R8.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103R8.build.board=GENERIC_F103R8 +GenF1.menu.pnum.Generic_F103R8.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103R8.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RB=Generic F103RB +GenF1.menu.pnum.Generic_F103RB.upload.maximum_size=131072 +GenF1.menu.pnum.Generic_F103RB.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103RB.build.board=GENERIC_F103RB +GenF1.menu.pnum.Generic_F103RB.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103RB.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RC=Generic F103RC +GenF1.menu.pnum.Generic_F103RC.upload.maximum_size=262144 +GenF1.menu.pnum.Generic_F103RC.upload.maximum_data_size=49152 +GenF1.menu.pnum.Generic_F103RC.build.board=GENERIC_F103RC +GenF1.menu.pnum.Generic_F103RC.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103RC.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RD=Generic F103RD +GenF1.menu.pnum.Generic_F103RD.upload.maximum_size=393216 +GenF1.menu.pnum.Generic_F103RD.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103RD.build.board=GENERIC_F103RD +GenF1.menu.pnum.Generic_F103RD.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103RD.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RE=Generic F103RE +GenF1.menu.pnum.Generic_F103RE.upload.maximum_size=524288 +GenF1.menu.pnum.Generic_F103RE.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103RE.build.board=GENERIC_F103RE +GenF1.menu.pnum.Generic_F103RE.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103RE.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RF=Generic F103RF +GenF1.menu.pnum.Generic_F103RF.upload.maximum_size=786432 +GenF1.menu.pnum.Generic_F103RF.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103RF.build.board=GENERIC_F103RF +GenF1.menu.pnum.Generic_F103RF.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103RF.build.variant=Generic_F103Rx + +GenF1.menu.pnum.Generic_F103RG=Generic F103RG +GenF1.menu.pnum.Generic_F103RG.upload.maximum_size=1048576 +GenF1.menu.pnum.Generic_F103RG.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103RG.build.board=GENERIC_F103RG +GenF1.menu.pnum.Generic_F103RG.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103RG.build.variant=Generic_F103Rx + +# Generic STM32F103Tx boards +GenF1.menu.pnum.Generic_F103T4=Generic F103T4 +GenF1.menu.pnum.Generic_F103T4.upload.maximum_size=16384 +GenF1.menu.pnum.Generic_F103T4.upload.maximum_data_size=6144 +GenF1.menu.pnum.Generic_F103T4.build.board=GENERIC_F103T4 +GenF1.menu.pnum.Generic_F103T4.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103T4.build.variant=Generic_F103Tx + +GenF1.menu.pnum.Generic_F103T6=Generic F103T6 +GenF1.menu.pnum.Generic_F103T6.upload.maximum_size=32768 +GenF1.menu.pnum.Generic_F103T6.upload.maximum_data_size=10240 +GenF1.menu.pnum.Generic_F103T6.build.board=GENERIC_F103T6 +GenF1.menu.pnum.Generic_F103T6.build.product_line=STM32F103x6 +GenF1.menu.pnum.Generic_F103T6.build.variant=Generic_F103Tx + +GenF1.menu.pnum.Generic_F103T8=Generic F103T8 +GenF1.menu.pnum.Generic_F103T8.upload.maximum_size=65536 +GenF1.menu.pnum.Generic_F103T8.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103T8.build.board=GENERIC_F103T8 +GenF1.menu.pnum.Generic_F103T8.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103T8.build.variant=Generic_F103Tx + +GenF1.menu.pnum.Generic_F103TB=Generic F103TB +GenF1.menu.pnum.Generic_F103TB.upload.maximum_size=131072 +GenF1.menu.pnum.Generic_F103TB.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103TB.build.board=GENERIC_F103TB +GenF1.menu.pnum.Generic_F103TB.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103TB.build.variant=Generic_F103Tx + +# Generic STM32F103Vx boards +GenF1.menu.pnum.Generic_F103V8=Generic F103V8 +GenF1.menu.pnum.Generic_F103V8.upload.maximum_size=65536 +GenF1.menu.pnum.Generic_F103V8.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103V8.build.board=GENERIC_F103V8 +GenF1.menu.pnum.Generic_F103V8.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103V8.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VB=Generic F103VB +GenF1.menu.pnum.Generic_F103VB.upload.maximum_size=131072 +GenF1.menu.pnum.Generic_F103VB.upload.maximum_data_size=20480 +GenF1.menu.pnum.Generic_F103VB.build.board=GENERIC_F103VB +GenF1.menu.pnum.Generic_F103VB.build.product_line=STM32F103xB +GenF1.menu.pnum.Generic_F103VB.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VC=Generic F103VC +GenF1.menu.pnum.Generic_F103VC.upload.maximum_size=262144 +GenF1.menu.pnum.Generic_F103VC.upload.maximum_data_size=49152 +GenF1.menu.pnum.Generic_F103VC.build.board=GENERIC_F103VC +GenF1.menu.pnum.Generic_F103VC.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103VC.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VD=Generic F103VD +GenF1.menu.pnum.Generic_F103VD.upload.maximum_size=393216 +GenF1.menu.pnum.Generic_F103VD.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103VD.build.board=GENERIC_F103VD +GenF1.menu.pnum.Generic_F103VD.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103VD.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VE=Generic F103VE +GenF1.menu.pnum.Generic_F103VE.upload.maximum_size=524288 +GenF1.menu.pnum.Generic_F103VE.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103VE.build.board=GENERIC_F103VE +GenF1.menu.pnum.Generic_F103VE.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103VE.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VF=Generic F103VF +GenF1.menu.pnum.Generic_F103VF.upload.maximum_size=786432 +GenF1.menu.pnum.Generic_F103VF.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103VF.build.board=GENERIC_F103VF +GenF1.menu.pnum.Generic_F103VF.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103VF.build.variant=Generic_F103Vx + +GenF1.menu.pnum.Generic_F103VG=Generic F103VG +GenF1.menu.pnum.Generic_F103VG.upload.maximum_size=1048576 +GenF1.menu.pnum.Generic_F103VG.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103VG.build.board=GENERIC_F103VG +GenF1.menu.pnum.Generic_F103VG.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103VG.build.variant=Generic_F103Vx + +# Generic STM32F103Zx boards +GenF1.menu.pnum.Generic_F103ZC=Generic F103ZC +GenF1.menu.pnum.Generic_F103ZC.upload.maximum_size=262144 +GenF1.menu.pnum.Generic_F103ZC.upload.maximum_data_size=49152 +GenF1.menu.pnum.Generic_F103ZC.build.board=Generic_F103ZC +GenF1.menu.pnum.Generic_F103ZC.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103ZC.build.variant=Generic_F103Zx + +GenF1.menu.pnum.Generic_F103ZD=Generic F103ZD +GenF1.menu.pnum.Generic_F103ZD.upload.maximum_size=393216 +GenF1.menu.pnum.Generic_F103ZD.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103ZD.build.board=Generic_F103ZC +GenF1.menu.pnum.Generic_F103ZD.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103ZD.build.variant=Generic_F103Zx + +GenF1.menu.pnum.Generic_F103ZE=Generic F103ZE +GenF1.menu.pnum.Generic_F103ZE.upload.maximum_size=524288 +GenF1.menu.pnum.Generic_F103ZE.upload.maximum_data_size=65536 +GenF1.menu.pnum.Generic_F103ZE.build.board=Generic_F103ZE +GenF1.menu.pnum.Generic_F103ZE.build.product_line=STM32F103xE +GenF1.menu.pnum.Generic_F103ZE.build.variant=Generic_F103Zx + +GenF1.menu.pnum.Generic_F103ZF=Generic F103ZF +GenF1.menu.pnum.Generic_F103ZF.upload.maximum_size=786432 +GenF1.menu.pnum.Generic_F103ZF.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103ZF.build.board=Generic_F103ZF +GenF1.menu.pnum.Generic_F103ZF.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103ZF.build.variant=Generic_F103Zx + +GenF1.menu.pnum.Generic_F103ZG=Generic F103ZG +GenF1.menu.pnum.Generic_F103ZG.upload.maximum_size=1048576 +GenF1.menu.pnum.Generic_F103ZG.upload.maximum_data_size=98304 +GenF1.menu.pnum.Generic_F103ZG.build.board=Generic_F103ZG +GenF1.menu.pnum.Generic_F103ZG.build.product_line=STM32F103xG +GenF1.menu.pnum.Generic_F103ZG.build.variant=Generic_F103Zx + +# VCCGND_F103ZET6 board +GenF1.menu.pnum.VCCGND_F103ZET6Mini=VCCGND F103ZET6 Mini +GenF1.menu.pnum.VCCGND_F103ZET6Mini.upload.maximum_size=524288 +GenF1.menu.pnum.VCCGND_F103ZET6Mini.upload.maximum_data_size=65536 +GenF1.menu.pnum.VCCGND_F103ZET6Mini.build.board=VCCGND_F103ZET6_MINI +GenF1.menu.pnum.VCCGND_F103ZET6Mini.build.product_line=STM32F103xE +GenF1.menu.pnum.VCCGND_F103ZET6Mini.build.variant=Generic_F103Zx + +GenF1.menu.pnum.VCCGND_F103ZET6=VCCGND F103ZET6 +GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_size=524288 +GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_data_size=65536 +GenF1.menu.pnum.VCCGND_F103ZET6.build.board=VCCGND_F103ZET6 +GenF1.menu.pnum.VCCGND_F103ZET6.build.product_line=STM32F103xE +GenF1.menu.pnum.VCCGND_F103ZET6.build.variant=Generic_F103Zx # HY-TinySTM103TB board GenF1.menu.pnum.HY_TinySTM103TB=HY-TinySTM103TB @@ -847,13 +1137,6 @@ GenF1.menu.pnum.MAPLEMINI_F103CB.build.board=MAPLEMINI_F103CB GenF1.menu.pnum.MAPLEMINI_F103CB.build.product_line=STM32F103xB GenF1.menu.pnum.MAPLEMINI_F103CB.build.variant=MAPLEMINI_F103CB -# VCCGND_F103ZET6 board -GenF1.menu.pnum.VCCGND_F103ZET6=VCCGND_F103ZET6 -GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_size=524288 -GenF1.menu.pnum.VCCGND_F103ZET6.upload.maximum_data_size=65536 -GenF1.menu.pnum.VCCGND_F103ZET6.build.board=VCCGND_F103ZET6 -GenF1.menu.pnum.VCCGND_F103ZET6.build.product_line=STM32F103xE -GenF1.menu.pnum.VCCGND_F103ZET6.build.variant=VCCGND_F103ZET6 # Upload menu GenF1.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) @@ -902,7 +1185,6 @@ GenF1.menu.upload_method.dfuoMethod.build.bootloader_flags=-DBL_LEGACY_LEAF -DVE GenF3.name=Generic STM32F3 series -GenF3.build.vid=0x0483 GenF3.build.core=arduino GenF3.build.board=GenF3 GenF3.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags} @@ -944,7 +1226,6 @@ GenF3.menu.upload_method.bmpMethod.upload.tool=bmp_upload GenF4.name=Generic STM32F4 series -GenF4.build.vid=0x0483 GenF4.build.core=arduino GenF4.build.board=GenF4 GenF4.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags} @@ -954,6 +1235,7 @@ GenF4.build.series=STM32F4xx GenF4.build.cmsis_lib_gcc=arm_cortexM4lf_math # Black F407VE +# https://github.com/mcauser/BLACK_F407VEZ GenF4.menu.pnum.BLACK_F407VE=Black F407VE GenF4.menu.pnum.BLACK_F407VE.upload.maximum_size=524288 GenF4.menu.pnum.BLACK_F407VE.upload.maximum_data_size=131072 @@ -962,6 +1244,7 @@ GenF4.menu.pnum.BLACK_F407VE.build.product_line=STM32F407xx GenF4.menu.pnum.BLACK_F407VE.build.variant=BLACK_F407XX # Black F407VG +# https://github.com/mcauser/BLACK_F407VEZ with bigger chip GenF4.menu.pnum.BLACK_F407VG=Black F407VG GenF4.menu.pnum.BLACK_F407VG.upload.maximum_size=1048576 GenF4.menu.pnum.BLACK_F407VG.upload.maximum_data_size=131072 @@ -970,6 +1253,7 @@ GenF4.menu.pnum.BLACK_F407VG.build.product_line=STM32F407xx GenF4.menu.pnum.BLACK_F407VG.build.variant=BLACK_F407XX # Black F407ZE +# https://github.com/mcauser/BLACK_F407ZE GenF4.menu.pnum.BLACK_F407ZE=Black F407ZE GenF4.menu.pnum.BLACK_F407ZE.upload.maximum_size=524288 GenF4.menu.pnum.BLACK_F407ZE.upload.maximum_data_size=131072 @@ -978,6 +1262,7 @@ GenF4.menu.pnum.BLACK_F407ZE.build.product_line=STM32F407xx GenF4.menu.pnum.BLACK_F407ZE.build.variant=BLACK_F407XX # Black F407ZG +# https://github.com/mcauser/BLACK_F407ZG GenF4.menu.pnum.BLACK_F407ZG=Black F407ZG GenF4.menu.pnum.BLACK_F407ZG.upload.maximum_size=1048576 GenF4.menu.pnum.BLACK_F407ZG.upload.maximum_data_size=131072 @@ -1015,15 +1300,25 @@ GenF4.menu.pnum.BLACKPILL_F401CC.upload.maximum_size=262144 GenF4.menu.pnum.BLACKPILL_F401CC.upload.maximum_data_size=65536 GenF4.menu.pnum.BLACKPILL_F401CC.build.board=BLACKPILL_F401CC GenF4.menu.pnum.BLACKPILL_F401CC.build.product_line=STM32F401xC -GenF4.menu.pnum.BLACKPILL_F401CC.build.variant=PILL_F401XX +GenF4.menu.pnum.BLACKPILL_F401CC.build.variant=Generic_F401Cx + +# BlackPill F411CE +# https://github.com/mcauser/WEACT_F411CEU6 +GenF4.menu.pnum.BLACKPILL_F411CE=BlackPill F411CE +GenF4.menu.pnum.BLACKPILL_F411CE.upload.maximum_size=524288 +GenF4.menu.pnum.BLACKPILL_F411CE.upload.maximum_data_size=131072 +GenF4.menu.pnum.BLACKPILL_F411CE.build.board=BLACKPILL_F411CE +GenF4.menu.pnum.BLACKPILL_F411CE.build.product_line=STM32F411xE +GenF4.menu.pnum.BLACKPILL_F411CE.build.variant=Generic_F411Cx # Core board F401RCT6 +# https://stm32-base.org/boards/STM32F401RCT6-STM32F-Core-Board GenF4.menu.pnum.CoreBoard_F401RC=Core board F401RCT6 GenF4.menu.pnum.CoreBoard_F401RC.upload.maximum_size=262144 GenF4.menu.pnum.CoreBoard_F401RC.upload.maximum_data_size=65536 GenF4.menu.pnum.CoreBoard_F401RC.build.board=CoreBoard_F401RC GenF4.menu.pnum.CoreBoard_F401RC.build.product_line=STM32F401xC -GenF4.menu.pnum.CoreBoard_F401RC.build.variant=CoreBoard_F401RC +GenF4.menu.pnum.CoreBoard_F401RC.build.variant=Generic_F401Rx # Adafruit Feather STM32F405 board GenF4.menu.pnum.FEATHER_F405=Adafruit Feather STM32F405 @@ -1033,6 +1328,239 @@ GenF4.menu.pnum.FEATHER_F405.build.board=FEATHER_F405 GenF4.menu.pnum.FEATHER_F405.build.product_line=STM32F405xx GenF4.menu.pnum.FEATHER_F405.build.variant=FEATHER_F405 +# ThunderPack F411xxE +# https://github.com/jgillick/ThunderPack/tree/STM32F4 +GenF4.menu.pnum.THUNDERPACK_F411=ThunderPack v1.1+ +GenF4.menu.pnum.THUNDERPACK_F411.upload.maximum_size=524288 +GenF4.menu.pnum.THUNDERPACK_F411.upload.maximum_data_size=131072 +GenF4.menu.pnum.THUNDERPACK_F411.build.board=THUNDERPACK_F411 +GenF4.menu.pnum.THUNDERPACK_F411.build.product_line=STM32F411xE +GenF4.menu.pnum.THUNDERPACK_F411.build.variant=THUNDERPACK + +# Generic F446RE +GenF4.menu.pnum.Generic_F446RE=Generic F446RE +GenF4.menu.pnum.Generic_F446RE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F446RE.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F446RE.build.board=GENERIC_F446RE +GenF4.menu.pnum.Generic_F446RE.build.product_line=STM32F446xx +GenF4.menu.pnum.Generic_F446RE.build.variant=Generic_F446Rx + +# Generic F446RC +GenF4.menu.pnum.Generic_F446RC=Generic F446RC +GenF4.menu.pnum.Generic_F446RC.upload.maximum_size=262144 +GenF4.menu.pnum.Generic_F446RC.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F446RC.build.board=GENERIC_F446RC +GenF4.menu.pnum.Generic_F446RC.build.product_line=STM32F446xx +GenF4.menu.pnum.Generic_F446RC.build.variant=Generic_F446Rx + +# Generic F423RH +GenF4.menu.pnum.Generic_F423RH=Generic F423RH +GenF4.menu.pnum.Generic_F423RH.upload.maximum_size=1572864 +GenF4.menu.pnum.Generic_F423RH.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F423RH.build.board=GENERIC_F423RH +GenF4.menu.pnum.Generic_F423RH.build.product_line=STM32F423xx +GenF4.menu.pnum.Generic_F423RH.build.variant=Generic_F4x3Rx + +# Generic F423CH +GenF4.menu.pnum.Generic_F423CH=Generic F423CH +GenF4.menu.pnum.Generic_F423CH.upload.maximum_size=1572864 +GenF4.menu.pnum.Generic_F423CH.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F423CH.build.board=GENERIC_F423CH +GenF4.menu.pnum.Generic_F423CH.build.product_line=STM32F423xx +GenF4.menu.pnum.Generic_F423CH.build.variant=Generic_F4x3Cx + +# Generic F417VG +GenF4.menu.pnum.Generic_F417VG=Generic F417VG +GenF4.menu.pnum.Generic_F417VG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F417VG.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F417VG.build.board=GENERIC_F417VG +GenF4.menu.pnum.Generic_F417VG.build.product_line=STM32F417xx +GenF4.menu.pnum.Generic_F417VG.build.variant=Generic_F4x7Vx + +# Generic F417VE +GenF4.menu.pnum.Generic_F417VE=Generic F417VE +GenF4.menu.pnum.Generic_F417VE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F417VE.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F417VE.build.board=GENERIC_F417VE +GenF4.menu.pnum.Generic_F417VE.build.product_line=STM32F417xx +GenF4.menu.pnum.Generic_F417VE.build.variant=Generic_F4x7Vx + +# Generic F415RG +GenF4.menu.pnum.Generic_F415RG=Generic F415RG +GenF4.menu.pnum.Generic_F415RG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F415RG.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F415RG.build.board=GENERIC_F415RG +GenF4.menu.pnum.Generic_F415RG.build.product_line=STM32F415xx +GenF4.menu.pnum.Generic_F415RG.build.variant=Generic_F4x5RG + +# Generic F413RH +GenF4.menu.pnum.Generic_F413RH=Generic F413RH +GenF4.menu.pnum.Generic_F413RH.upload.maximum_size=1572864 +GenF4.menu.pnum.Generic_F413RH.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F413RH.build.board=GENERIC_F413RH +GenF4.menu.pnum.Generic_F413RH.build.product_line=STM32F413xx +GenF4.menu.pnum.Generic_F413RH.build.variant=Generic_F4x3Rx + +# Generic F413RG +GenF4.menu.pnum.Generic_F413RG=Generic F413RG +GenF4.menu.pnum.Generic_F413RG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F413RG.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F413RG.build.board=GENERIC_F413RG +GenF4.menu.pnum.Generic_F413RG.build.product_line=STM32F413xx +GenF4.menu.pnum.Generic_F413RG.build.variant=Generic_F4x3Rx + +# Generic F413CH +GenF4.menu.pnum.Generic_F413CH=Generic F413CH +GenF4.menu.pnum.Generic_F413CH.upload.maximum_size=1572864 +GenF4.menu.pnum.Generic_F413CH.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F413CH.build.board=GENERIC_F413CH +GenF4.menu.pnum.Generic_F413CH.build.product_line=STM32F413xx +GenF4.menu.pnum.Generic_F413CH.build.variant=Generic_F4x3Cx + +# Generic F413CG +GenF4.menu.pnum.Generic_F413CG=Generic F413CG +GenF4.menu.pnum.Generic_F413CG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F413CG.upload.maximum_data_size=327680 +GenF4.menu.pnum.Generic_F413CG.build.board=GENERIC_F413CG +GenF4.menu.pnum.Generic_F413CG.build.product_line=STM32F413xx +GenF4.menu.pnum.Generic_F413CG.build.variant=Generic_F4x3Cx + +# Generic F412RG +GenF4.menu.pnum.Generic_F412RG=Generic F412RG +GenF4.menu.pnum.Generic_F412RG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F412RG.upload.maximum_data_size=262144 +GenF4.menu.pnum.Generic_F412RG.build.board=GENERIC_F412RG +GenF4.menu.pnum.Generic_F412RG.build.product_line=STM32F412Rx +GenF4.menu.pnum.Generic_F412RG.build.variant=Generic_F412Rx + +# Generic F412RE +GenF4.menu.pnum.Generic_F412RE=Generic F412RE +GenF4.menu.pnum.Generic_F412RE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F412RE.upload.maximum_data_size=262144 +GenF4.menu.pnum.Generic_F412RE.build.board=GENERIC_F412RE +GenF4.menu.pnum.Generic_F412RE.build.product_line=STM32F412Rx +GenF4.menu.pnum.Generic_F412RE.build.variant=Generic_F412Rx + +# Generic F412CG +GenF4.menu.pnum.Generic_F412CG=Generic F412CG +GenF4.menu.pnum.Generic_F412CG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F412CG.upload.maximum_data_size=262144 +GenF4.menu.pnum.Generic_F412CG.build.board=GENERIC_F412CG +GenF4.menu.pnum.Generic_F412CG.build.product_line=STM32F412Cx +GenF4.menu.pnum.Generic_F412CG.build.variant=Generic_F412Cx + +# Generic F412CE +GenF4.menu.pnum.Generic_F412CE=Generic F412CE +GenF4.menu.pnum.Generic_F412CE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F412CE.upload.maximum_data_size=262144 +GenF4.menu.pnum.Generic_F412CE.build.board=GENERIC_F412CE +GenF4.menu.pnum.Generic_F412CE.build.product_line=STM32F412Cx +GenF4.menu.pnum.Generic_F412CE.build.variant=Generic_F412Cx + +# Generic F411RE +GenF4.menu.pnum.Generic_F411RE=Generic F411RE +GenF4.menu.pnum.Generic_F411RE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F411RE.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F411RE.build.board=GENERIC_F411RE +GenF4.menu.pnum.Generic_F411RE.build.product_line=STM32F411xE +GenF4.menu.pnum.Generic_F411RE.build.variant=Generic_F411Rx + +# Generic F411RC +GenF4.menu.pnum.Generic_F411RC=Generic F411RC +GenF4.menu.pnum.Generic_F411RC.upload.maximum_size=262144 +GenF4.menu.pnum.Generic_F411RC.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F411RC.build.board=GENERIC_F411RC +GenF4.menu.pnum.Generic_F411RC.build.product_line=STM32F411xE +GenF4.menu.pnum.Generic_F411RC.build.variant=Generic_F411Rx + +# Generic F411CE +GenF4.menu.pnum.Generic_F411CE=Generic F411CE +GenF4.menu.pnum.Generic_F411CE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F411CE.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F411CE.build.board=GENERIC_F411CE +GenF4.menu.pnum.Generic_F411CE.build.product_line=STM32F411xE +GenF4.menu.pnum.Generic_F411CE.build.variant=Generic_F411Cx + +# Generic F411CC +GenF4.menu.pnum.Generic_F411CC=Generic F411CC +GenF4.menu.pnum.Generic_F411CC.upload.maximum_size=262144 +GenF4.menu.pnum.Generic_F411CC.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F411CC.build.board=GENERIC_F411CC +GenF4.menu.pnum.Generic_F411CC.build.product_line=STM32F411xE +GenF4.menu.pnum.Generic_F411CC.build.variant=Generic_F411Cx + +# Generic F410RB +GenF4.menu.pnum.Generic_F410RB=Generic F410RB +GenF4.menu.pnum.Generic_F410RB.upload.maximum_size=131072 +GenF4.menu.pnum.Generic_F410RB.upload.maximum_data_size=32768 +GenF4.menu.pnum.Generic_F410RB.build.board=GENERIC_F410RB +GenF4.menu.pnum.Generic_F410RB.build.product_line=STM32F410Rx +GenF4.menu.pnum.Generic_F410RB.build.variant=Generic_F410Rx + +# Generic F410R8 +GenF4.menu.pnum.Generic_F410R8=Generic F410R8 +GenF4.menu.pnum.Generic_F410R8.upload.maximum_size=65536 +GenF4.menu.pnum.Generic_F410R8.upload.maximum_data_size=32768 +GenF4.menu.pnum.Generic_F410R8.build.board=GENERIC_F410R8 +GenF4.menu.pnum.Generic_F410R8.build.product_line=STM32F410Rx +GenF4.menu.pnum.Generic_F410R8.build.variant=Generic_F410Rx + +# Generic F410CB +GenF4.menu.pnum.Generic_F410CB=Generic F410CB +GenF4.menu.pnum.Generic_F410CB.upload.maximum_size=131072 +GenF4.menu.pnum.Generic_F410CB.upload.maximum_data_size=32768 +GenF4.menu.pnum.Generic_F410CB.build.board=GENERIC_F410CB +GenF4.menu.pnum.Generic_F410CB.build.product_line=STM32F410Cx +GenF4.menu.pnum.Generic_F410CB.build.variant=Generic_F410Cx + +# Generic F410C8 +GenF4.menu.pnum.Generic_F410C8=Generic F410C8 +GenF4.menu.pnum.Generic_F410C8.upload.maximum_size=65536 +GenF4.menu.pnum.Generic_F410C8.upload.maximum_data_size=32768 +GenF4.menu.pnum.Generic_F410C8.build.board=GENERIC_F410C8 +GenF4.menu.pnum.Generic_F410C8.build.product_line=STM32F410Cx +GenF4.menu.pnum.Generic_F410C8.build.variant=Generic_F410Cx + +# Generic F407VG +GenF4.menu.pnum.Generic_F407VG=Generic F407VG +GenF4.menu.pnum.Generic_F407VG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F407VG.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F407VG.build.board=GENERIC_F407VG +GenF4.menu.pnum.Generic_F407VG.build.product_line=STM32F407xx +GenF4.menu.pnum.Generic_F407VG.build.variant=Generic_F4x7Vx + +# Generic F407VE +GenF4.menu.pnum.Generic_F407VE=Generic F407VE +GenF4.menu.pnum.Generic_F407VE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F407VE.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F407VE.build.board=GENERIC_F407VE +GenF4.menu.pnum.Generic_F407VE.build.product_line=STM32F407xx +GenF4.menu.pnum.Generic_F407VE.build.variant=Generic_F4x7Vx + +# Generic F407ZG +GenF4.menu.pnum.Generic_F407ZG=Generic F407ZG +GenF4.menu.pnum.Generic_F407ZG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F407ZG.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F407ZG.build.board=Generic_F407ZG +GenF4.menu.pnum.Generic_F407ZG.build.product_line=STM32F407xx +GenF4.menu.pnum.Generic_F407ZG.build.variant=Generic_F407Zx + +# VCCGND_F407ZGT6 board +GenF4.menu.pnum.VCCGND_F407ZGT6Mini=VCCGND F407ZGT6 Mini +GenF4.menu.pnum.VCCGND_F407ZGT6Mini.upload.maximum_size=1048576 +GenF4.menu.pnum.VCCGND_F407ZGT6Mini.upload.maximum_data_size=131072 +GenF4.menu.pnum.VCCGND_F407ZGT6Mini.build.board=VCCGND_F407ZGT6_MINI +GenF4.menu.pnum.VCCGND_F407ZGT6Mini.build.product_line=STM32F407xx +GenF4.menu.pnum.VCCGND_F407ZGT6Mini.build.variant=Generic_F407Zx + +# Generic F405RG +GenF4.menu.pnum.Generic_F405RG=Generic F405RG +GenF4.menu.pnum.Generic_F405RG.upload.maximum_size=1048576 +GenF4.menu.pnum.Generic_F405RG.upload.maximum_data_size=131072 +GenF4.menu.pnum.Generic_F405RG.build.board=GENERIC_F405RG +GenF4.menu.pnum.Generic_F405RG.build.product_line=STM32F405xx +GenF4.menu.pnum.Generic_F405RG.build.variant=Generic_F4x5RG + # Generic F401RE GenF4.menu.pnum.Generic_F401RE=Generic F401RE GenF4.menu.pnum.Generic_F401RE.upload.maximum_size=524288 @@ -1040,7 +1568,6 @@ GenF4.menu.pnum.Generic_F401RE.upload.maximum_data_size=98304 GenF4.menu.pnum.Generic_F401RE.build.board=GENERIC_F401RE GenF4.menu.pnum.Generic_F401RE.build.product_line=STM32F401xE GenF4.menu.pnum.Generic_F401RE.build.variant=Generic_F401Rx -GenF4.menu.pnum.Generic_F401RE.node=NODE_F401RE # Generic F401RD GenF4.menu.pnum.Generic_F401RD=Generic F401RD @@ -1049,7 +1576,6 @@ GenF4.menu.pnum.Generic_F401RD.upload.maximum_data_size=98304 GenF4.menu.pnum.Generic_F401RD.build.board=GENERIC_F401RD GenF4.menu.pnum.Generic_F401RD.build.product_line=STM32F401xE GenF4.menu.pnum.Generic_F401RD.build.variant=Generic_F401Rx -GenF4.menu.pnum.Generic_F401RD.node=NODE_F401RE # Generic F401RC GenF4.menu.pnum.Generic_F401RC=Generic F401RC @@ -1058,7 +1584,6 @@ GenF4.menu.pnum.Generic_F401RC.upload.maximum_data_size=65536 GenF4.menu.pnum.Generic_F401RC.build.board=GENERIC_F401RC GenF4.menu.pnum.Generic_F401RC.build.product_line=STM32F401xC GenF4.menu.pnum.Generic_F401RC.build.variant=Generic_F401Rx -GenF4.menu.pnum.Generic_F401RC.node=NODE_F401RE # Generic F401RB GenF4.menu.pnum.Generic_F401RB=Generic F401RB @@ -1067,7 +1592,38 @@ GenF4.menu.pnum.Generic_F401RB.upload.maximum_data_size=65536 GenF4.menu.pnum.Generic_F401RB.build.board=GENERIC_F401RB GenF4.menu.pnum.Generic_F401RB.build.product_line=STM32F401xC GenF4.menu.pnum.Generic_F401RB.build.variant=Generic_F401Rx -GenF4.menu.pnum.Generic_F401RB.node=NODE_F401RE + +# Generic F401CE +GenF4.menu.pnum.Generic_F401CE=Generic F401CE +GenF4.menu.pnum.Generic_F401CE.upload.maximum_size=524288 +GenF4.menu.pnum.Generic_F401CE.upload.maximum_data_size=98304 +GenF4.menu.pnum.Generic_F401CE.build.board=GENERIC_F401CE +GenF4.menu.pnum.Generic_F401CE.build.product_line=STM32F401xE +GenF4.menu.pnum.Generic_F401CE.build.variant=Generic_F401Cx + +# Generic F401CD +GenF4.menu.pnum.Generic_F401CD=Generic F401CD +GenF4.menu.pnum.Generic_F401CD.upload.maximum_size=393216 +GenF4.menu.pnum.Generic_F401CD.upload.maximum_data_size=98304 +GenF4.menu.pnum.Generic_F401CD.build.board=GENERIC_F401CD +GenF4.menu.pnum.Generic_F401CD.build.product_line=STM32F401xE +GenF4.menu.pnum.Generic_F401CD.build.variant=Generic_F401Cx + +# Generic F401CC +GenF4.menu.pnum.Generic_F401CC=Generic F401CC +GenF4.menu.pnum.Generic_F401CC.upload.maximum_size=262144 +GenF4.menu.pnum.Generic_F401CC.upload.maximum_data_size=65536 +GenF4.menu.pnum.Generic_F401CC.build.board=GENERIC_F401CC +GenF4.menu.pnum.Generic_F401CC.build.product_line=STM32F401xC +GenF4.menu.pnum.Generic_F401CC.build.variant=Generic_F401Cx + +# Generic F401CB +GenF4.menu.pnum.Generic_F401CB=Generic F401CB +GenF4.menu.pnum.Generic_F401CB.upload.maximum_size=131072 +GenF4.menu.pnum.Generic_F401CB.upload.maximum_data_size=65536 +GenF4.menu.pnum.Generic_F401CB.build.board=GENERIC_F401CB +GenF4.menu.pnum.Generic_F401CB.build.product_line=STM32F401xC +GenF4.menu.pnum.Generic_F401CB.build.variant=Generic_F401Cx # Upload menu GenF4.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) @@ -1095,11 +1651,46 @@ GenF4.menu.upload_method.hidMethod.upload.tool=hid_upload GenF4.menu.upload_method.hidMethod.build.flash_offset=0x4000 GenF4.menu.upload_method.hidMethod.build.bootloader_flags=-DBL_HID -DVECT_TAB_OFFSET={build.flash_offset} +################################################################################ +# Generic H7 +GenH7.name=Generic STM32H7 Series + +GenH7.build.core=arduino +GenH7.build.board=GenH7 +GenH7.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} +GenH7.build.cmsis_lib_gcc=arm_cortexM7lfsp_math +GenH7.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +GenH7.build.series=STM32H7xx +GenH7.build.mcu=cortex-m7 + +# Daisy Seed board +GenH7.menu.pnum.DAISY_SEED=Daisy Seed +GenH7.menu.pnum.DAISY_SEED.upload.maximum_size=131072 +GenH7.menu.pnum.DAISY_SEED.upload.maximum_data_size=524288 +GenH7.menu.pnum.DAISY_SEED.build.board=DAISY_SEED +GenH7.menu.pnum.DAISY_SEED.build.product_line=STM32H750xx +GenH7.menu.pnum.DAISY_SEED.build.variant=DAISY_SEED + +# Upload menu +GenH7.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) +GenH7.menu.upload_method.swdMethod.upload.protocol=0 +GenH7.menu.upload_method.swdMethod.upload.options=-g +GenH7.menu.upload_method.swdMethod.upload.tool=stm32CubeProg + +GenH7.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) +GenH7.menu.upload_method.serialMethod.upload.protocol=1 +GenH7.menu.upload_method.serialMethod.upload.options={serial.port.file} -s +GenH7.menu.upload_method.serialMethod.upload.tool=stm32CubeProg + +GenH7.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU) +GenH7.menu.upload_method.dfuMethod.upload.protocol=2 +GenH7.menu.upload_method.dfuMethod.upload.options=-g +GenH7.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg + ################################################################################ # Generic L0 GenL0.name=Generic STM32L0 series -GenL0.build.vid=0x0483 GenL0.build.core=arduino GenL0.build.board=GenL0 GenL0.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0 @@ -1108,12 +1699,12 @@ GenL0.build.series=STM32L0xx GenL0.build.cmsis_lib_gcc=arm_cortexM0l_math # ThunderPack -GenL0.menu.pnum.THUNDER_PACK=ThunderPack -GenL0.menu.pnum.THUNDER_PACK.upload.maximum_size=196608 -GenL0.menu.pnum.THUNDER_PACK.upload.maximum_data_size=20480 -GenL0.menu.pnum.THUNDER_PACK.build.board=THUNDER_PACK -GenL0.menu.pnum.THUNDER_PACK.build.product_line=STM32L072xx -GenL0.menu.pnum.THUNDER_PACK.build.variant=THUNDER_PACK +GenL0.menu.pnum.THUNDERPACK_L072=ThunderPack v1.0 +GenL0.menu.pnum.THUNDERPACK_L072.upload.maximum_size=196608 +GenL0.menu.pnum.THUNDERPACK_L072.upload.maximum_data_size=20480 +GenL0.menu.pnum.THUNDERPACK_L072.build.board=THUNDERPACK_L072 +GenL0.menu.pnum.THUNDERPACK_L072.build.product_line=STM32L072xx +GenL0.menu.pnum.THUNDERPACK_L072.build.variant=THUNDERPACK # Piconomix PX-HER0 board GenL0.menu.pnum.PX_HER0=PX-HER0 @@ -1148,7 +1739,6 @@ GenL0.menu.upload_method.bmpMethod.upload.tool=bmp_upload ESC_board.name=Electronic speed controllers -ESC_board.build.vid=0x0483 ESC_board.build.core=arduino ESC_board.build.board=FCE_board ESC_board.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -1185,7 +1775,6 @@ ESC_board.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg LoRa.name=LoRa boards -LoRa.build.vid=0x0483 LoRa.build.core=arduino LoRa.build.board=LoRa LoRa.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -1224,17 +1813,29 @@ LoRa.menu.pnum.RHF76_052.build.cmsis_lib_gcc=arm_cortexM0l_math LoRa.menu.pnum.RHF76_052.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0 # ELEKTOR_F072C8 -LoRa.menu.pnum.ELEKTOR_F072C8=Elektor LoRa Node Core F072 +LoRa.menu.pnum.ELEKTOR_F072C8=Elektor LoRa Node Core F072C8 (64kB) LoRa.menu.pnum.ELEKTOR_F072C8.upload.maximum_data_size=16384 -LoRa.menu.pnum.ELEKTOR_F072C8.upload.maximum_size=131072 +LoRa.menu.pnum.ELEKTOR_F072C8.upload.maximum_size=65536 LoRa.menu.pnum.ELEKTOR_F072C8.build.mcu=cortex-m0 LoRa.menu.pnum.ELEKTOR_F072C8.build.board=ELEKTOR_F072C8 LoRa.menu.pnum.ELEKTOR_F072C8.build.series=STM32F0xx LoRa.menu.pnum.ELEKTOR_F072C8.build.product_line=STM32F072xB -LoRa.menu.pnum.ELEKTOR_F072C8.build.variant=ELEKTOR_F072C8 +LoRa.menu.pnum.ELEKTOR_F072C8.build.variant=ELEKTOR_F072Cx LoRa.menu.pnum.ELEKTOR_F072C8.build.cmsis_lib_gcc=arm_cortexM0l_math LoRa.menu.pnum.ELEKTOR_F072C8.build.extra_flags=-D{build.product_line} {build.xSerial} +# ELEKTOR_F072CB +LoRa.menu.pnum.ELEKTOR_F072CB=Elektor LoRa Node Core F072CB (128kB) +LoRa.menu.pnum.ELEKTOR_F072CB.upload.maximum_data_size=16384 +LoRa.menu.pnum.ELEKTOR_F072CB.upload.maximum_size=131072 +LoRa.menu.pnum.ELEKTOR_F072CB.build.mcu=cortex-m0 +LoRa.menu.pnum.ELEKTOR_F072CB.build.board=ELEKTOR_F072CB +LoRa.menu.pnum.ELEKTOR_F072CB.build.series=STM32F0xx +LoRa.menu.pnum.ELEKTOR_F072CB.build.product_line=STM32F072xB +LoRa.menu.pnum.ELEKTOR_F072CB.build.variant=ELEKTOR_F072Cx +LoRa.menu.pnum.ELEKTOR_F072CB.build.cmsis_lib_gcc=arm_cortexM0l_math +LoRa.menu.pnum.ELEKTOR_F072CB.build.extra_flags=-D{build.product_line} {build.xSerial} + # Upload menu LoRa.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) LoRa.menu.upload_method.swdMethod.upload.protocol=0 @@ -1256,15 +1857,14 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg 3dprinter.name=3D printer boards -3dprinter.build.vid=0x0483 3dprinter.build.core=arduino 3dprinter.build.board=3dprinter 3dprinter.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} # ARMED_V1 board 3dprinter.menu.pnum.ARMED_V1=Armed V1 -3dprinter.menu.pnum.ARMED_V1.upload.maximum_size=1048576 -3dprinter.menu.pnum.ARMED_V1.upload.maximum_data_size=196608 +3dprinter.menu.pnum.ARMED_V1.upload.maximum_size=524288 +3dprinter.menu.pnum.ARMED_V1.upload.maximum_data_size=131072 3dprinter.menu.pnum.ARMED_V1.build.mcu=cortex-m4 3dprinter.menu.pnum.ARMED_V1.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard 3dprinter.menu.pnum.ARMED_V1.build.board=ARMED_V1 @@ -1272,8 +1872,6 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg 3dprinter.menu.pnum.ARMED_V1.build.product_line=STM32F407xx 3dprinter.menu.pnum.ARMED_V1.build.variant=ARMED_V1 3dprinter.menu.pnum.ARMED_V1.build.cmsis_lib_gcc=arm_cortexM4lf_math -3dprinter.menu.pnum.ARMED_V1.build.vid=0x0483 -3dprinter.menu.pnum.ARMED_V1.build.pid=0x5740 # REMRAM_V1 board 3dprinter.menu.pnum.REMRAM_V1=RemRam v1 @@ -1314,7 +1912,7 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg # PRNTR_F407_V1 board 3dprinter.menu.pnum.PRNTR_F407_V1=PRNTR F407 v1 3dprinter.menu.pnum.PRNTR_F407_V1.upload.maximum_size=524288 -3dprinter.menu.pnum.PRNTR_F407_V1.upload.maximum_data_size=196608 +3dprinter.menu.pnum.PRNTR_F407_V1.upload.maximum_data_size=131072 3dprinter.menu.pnum.PRNTR_F407_V1.build.mcu=cortex-m4 3dprinter.menu.pnum.PRNTR_F407_V1.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard 3dprinter.menu.pnum.PRNTR_F407_V1.build.board=PRNTR_F407_V1 @@ -1326,7 +1924,7 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg # PRNTR_V2 board 3dprinter.menu.pnum.PRNTR_V2=PRNTR v2 3dprinter.menu.pnum.PRNTR_V2.upload.maximum_size=524288 -3dprinter.menu.pnum.PRNTR_V2.upload.maximum_data_size=196608 +3dprinter.menu.pnum.PRNTR_V2.upload.maximum_data_size=131072 3dprinter.menu.pnum.PRNTR_V2.build.mcu=cortex-m4 3dprinter.menu.pnum.PRNTR_V2.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard 3dprinter.menu.pnum.PRNTR_V2.build.board=PRNTR_V2 @@ -1400,6 +1998,20 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg 3dprinter.menu.pnum.VAKE_F446VE.build.variant=VAKE_F446VE 3dprinter.menu.pnum.VAKE_F446VE.build.cmsis_lib_gcc=arm_cortexM4lf_math +# FYSETC_S6 board +3dprinter.menu.pnum.FYSETC_S6=FYSETC_S6 +3dprinter.menu.pnum.FYSETC_S6.upload.maximum_size=458752 +3dprinter.menu.pnum.FYSETC_S6.upload.maximum_data_size=131072 +3dprinter.menu.pnum.FYSETC_S6.build.mcu=cortex-m4 +3dprinter.menu.pnum.FYSETC_S6.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard +3dprinter.menu.pnum.FYSETC_S6.build.board=FYSETC_S6 +3dprinter.menu.pnum.FYSETC_S6.build.series=STM32F4xx +3dprinter.menu.pnum.FYSETC_S6.build.product_line=STM32F446xx +3dprinter.menu.pnum.FYSETC_S6.build.variant=FYSETC_S6 +3dprinter.menu.pnum.FYSETC_S6.build.cmsis_lib_gcc=arm_cortexM4lf_math +3dprinter.menu.pnum.FYSETC_S6.build.flash_offset=0x10000 +3dprinter.menu.pnum.FYSETC_S6.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -DVECT_TAB_OFFSET={build.flash_offset} + # Upload menu 3dprinter.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) 3dprinter.menu.upload_method.swdMethod.upload.protocol=0 @@ -1422,7 +2034,6 @@ LoRa.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg Genericflight.name=Generic flight controllers -Genericflight.build.vid=0x0483 Genericflight.build.core=arduino Genericflight.build.board=Genericflight Genericflight.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags} @@ -1502,12 +2113,73 @@ Genericflight.menu.upload_method.dfuoMethod.upload.altID=1 Genericflight.menu.upload_method.dfuoMethod.build.flash_offset=0x5000 Genericflight.menu.upload_method.dfuoMethod.build.bootloader_flags=-DBL_LEGACY_LEAF -DVECT_TAB_OFFSET={build.flash_offset} +################################################################################ +# Garatronic-McHobby STM32 boards + +Garatronic.name=Garatronic/McHobby + +Garatronic.build.core=arduino +Garatronic.build.board=Garatronic +Garatronic.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} + +# PYBSTICK26(DUINO) board with F072RB +Garatronic.menu.pnum.PYBSTICK26_DUINO=PYBSTICK26 Duino +Garatronic.menu.pnum.PYBSTICK26_DUINO.upload.maximum_size=131072 +Garatronic.menu.pnum.PYBSTICK26_DUINO.upload.maximum_data_size=16384 +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.mcu=cortex-m0 +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.board=PYBSTICK26_DUINO +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.series=STM32F0xx +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.product_line=STM32F072xB +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.variant=PYBSTICK26_DUINO +Garatronic.menu.pnum.PYBSTICK26_DUINO.build.cmsis_lib_gcc=arm_cortexM0l_math + +# PYBSTICK26(LITE) board with F401CE +Garatronic.menu.pnum.PYBSTICK26_LITE=PYBSTICK26 Lite +Garatronic.menu.pnum.PYBSTICK26_LITE.upload.maximum_size=524288 +Garatronic.menu.pnum.PYBSTICK26_LITE.upload.maximum_data_size=98304 +Garatronic.menu.pnum.PYBSTICK26_LITE.build.mcu=cortex-m4 +Garatronic.menu.pnum.PYBSTICK26_LITE.build.board=PYBSTICK26_LITE +Garatronic.menu.pnum.PYBSTICK26_LITE.build.series=STM32F4xx +Garatronic.menu.pnum.PYBSTICK26_LITE.build.product_line=STM32F401xE +Garatronic.menu.pnum.PYBSTICK26_LITE.build.variant=PYBSTICK26_LITE +Garatronic.menu.pnum.PYBSTICK26_LITE.build.cmsis_lib_gcc=arm_cortexM4lf_math +Garatronic.menu.pnum.PYBSTICK26_LITE.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard + +# PYBSTICK26(STD/Programmez!) board with F411RE +Garatronic.menu.pnum.PYBSTICK26_STD=PYBSTICK26 STD-Programmez +Garatronic.menu.pnum.PYBSTICK26_STD.upload.maximum_size=524288 +Garatronic.menu.pnum.PYBSTICK26_STD.upload.maximum_data_size=131072 +Garatronic.menu.pnum.PYBSTICK26_STD.build.mcu=cortex-m4 +Garatronic.menu.pnum.PYBSTICK26_STD.build.board=PYBSTICK26_STD +Garatronic.menu.pnum.PYBSTICK26_STD.build.series=STM32F4xx +Garatronic.menu.pnum.PYBSTICK26_STD.build.product_line=STM32F411xE +Garatronic.menu.pnum.PYBSTICK26_STD.build.variant=PYBSTICK26_STD +Garatronic.menu.pnum.PYBSTICK26_STD.build.cmsis_lib_gcc=arm_cortexM4lf_math +Garatronic.menu.pnum.PYBSTICK26_STD.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard + +# PYBSTICK26(PRO) board with F412RE +Garatronic.menu.pnum.PYBSTICK26_PRO=PYBSTICK26 Pro +Garatronic.menu.pnum.PYBSTICK26_PRO.upload.maximum_size=524288 +Garatronic.menu.pnum.PYBSTICK26_PRO.upload.maximum_data_size=262144 +Garatronic.menu.pnum.PYBSTICK26_PRO.build.mcu=cortex-m4 +Garatronic.menu.pnum.PYBSTICK26_PRO.build.board=PYBSTICK26_PRO +Garatronic.menu.pnum.PYBSTICK26_PRO.build.series=STM32F4xx +Garatronic.menu.pnum.PYBSTICK26_PRO.build.product_line=STM32F412Rx +Garatronic.menu.pnum.PYBSTICK26_PRO.build.variant=PYBSTICK26_PRO +Garatronic.menu.pnum.PYBSTICK26_PRO.build.cmsis_lib_gcc=arm_cortexM4lf_math +Garatronic.menu.pnum.PYBSTICK26_PRO.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard + +# PYBSTICK26 boards upload method +Garatronic.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU) +Garatronic.menu.upload_method.dfuMethod.upload.protocol=2 +Garatronic.menu.upload_method.dfuMethod.upload.options=-g +Garatronic.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg + ################################################################################ # Midatronics boards Midatronics.name=Midatronics boards -Midatronics.build.vid=0x0483 Midatronics.build.core=arduino Midatronics.build.board=Midatronics Midatronics.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} @@ -1577,6 +2249,13 @@ Eval.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE Eval.menu.xserial.disabled=Disabled (no Serial support) Eval.menu.xserial.disabled.build.xSerial= +STM32MP1.menu.virtio.disable=Disabled (no SerialVirtIO nor /dev/ttyRPMSG0 available) +STM32MP1.menu.virtio.disable.build.enable_virtio= +STM32MP1.menu.virtio.generic=SerialVirtIO (= generic 'Serial') <=> /dev/ttyRPMSG0 +STM32MP1.menu.virtio.generic.build.enable_virtio={build.virtio_flags} +STM32MP1.menu.virtio.enabled=SerialVirtIO <=> /dev/ttyRPMSG0 +STM32MP1.menu.virtio.enabled.build.enable_virtio={build.virtio_flags} -DDISABLE_GENERIC_SERIALVIRTIO + STM32MP1.menu.xserial.generic=UART only (generic 'Serial') STM32MP1.menu.xserial.generic.build.xSerial=-DHAL_UART_MODULE_ENABLED STM32MP1.menu.xserial.none=UART only (no generic 'Serial') @@ -1608,6 +2287,12 @@ GenF4.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE GenF4.menu.xserial.disabled=Disabled (no Serial support) GenF4.menu.xserial.disabled.build.xSerial= +GenH7.menu.xserial.generic=Enabled (generic 'Serial') +GenH7.menu.xserial.none=Enabled (no generic 'Serial') +GenH7.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE +GenH7.menu.xserial.disabled=Disabled (No Serial support) +GenH7.menu.xserial.disabled.build.xSerial= + GenL0.menu.xserial.generic=Enabled (generic 'Serial') GenL0.menu.xserial.none=Enabled (no generic 'Serial') GenL0.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE @@ -1638,6 +2323,12 @@ Genericflight.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERI Genericflight.menu.xserial.disabled=Disabled (no Serial support) Genericflight.menu.xserial.disabled.build.xSerial= +Garatronic.menu.xserial.generic=Enabled (generic 'Serial') +Garatronic.menu.xserial.none=Enabled (no generic 'Serial') +Garatronic.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE +Garatronic.menu.xserial.disabled=Disabled (no Serial support) +Garatronic.menu.xserial.disabled.build.xSerial= + Midatronics.menu.xserial.generic=Enabled (generic 'Serial') Midatronics.menu.xserial.none=Enabled (no generic 'Serial') Midatronics.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE @@ -1749,6 +2440,17 @@ GenF4.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS GenF4.menu.xusb.HSFS=High Speed in Full Speed mode GenF4.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS +GenH7.menu.usb.none=None +GenH7.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART) +GenH7.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC +GenH7.menu.usb.CDC=CDC (no generic 'Serial') +GenH7.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB +GenH7.menu.usb.HID=HID (keyboard and mouse) +GenH7.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE +GenH7.menu.xusb.FS=Low/Full Speed +GenH7.menu.xusb.HSFS=High Speed in Full Speed mode +GenH7.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS + GenL0.menu.usb.none=None GenL0.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART) GenL0.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC @@ -1781,6 +2483,14 @@ Genericflight.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS Genericflight.menu.xusb.HSFS=High Speed in Full Speed mode Genericflight.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS +Garatronic.menu.usb.none=None +Garatronic.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART) +Garatronic.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC +Garatronic.menu.usb.CDC=CDC (no generic 'Serial') +Garatronic.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB +Garatronic.menu.usb.HID=HID (keyboard and mouse) +Garatronic.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE + Midatronics.menu.usb.none=None Midatronics.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART) Midatronics.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC @@ -1977,6 +2687,24 @@ GenF4.menu.opt.o3lto.build.flags.optimize=-O3 -flto GenF4.menu.opt.ogstd=Debug (-g) GenF4.menu.opt.ogstd.build.flags.optimize=-g -Og +GenH7.menu.opt.osstd=Smallest (-Os default) +GenH7.menu.opt.oslto=Smallest (-Os) with LTO +GenH7.menu.opt.oslto.build.flags.optimize=-Os -flto +GenH7.menu.opt.o1std=Fast (-O1) +GenH7.menu.opt.o1std.build.flags.optimize=-O1 +GenH7.menu.opt.o1lto=Fast (-O1) with LTO +GenH7.menu.opt.o1lto.build.flags.optimize=-O1 -flto +GenH7.menu.opt.o2std=Faster (-O2) +GenH7.menu.opt.o2std.build.flags.optimize=-O2 +GenH7.menu.opt.o2lto=Faster (-O2) with LTO +GenH7.menu.opt.o2lto.build.flags.optimize=-O2 -flto +GenH7.menu.opt.o3std=Fastest (-O3) +GenH7.menu.opt.o3std.build.flags.optimize=-O3 +GenH7.menu.opt.o3lto=Fastest (-O3) with LTO +GenH7.menu.opt.o3lto.build.flags.optimize=-O3 -flto +GenH7.menu.opt.ogstd=Debug (-g) +GenH7.menu.opt.ogstd.build.flags.optimize=-g -Og + GenL0.menu.opt.osstd=Smallest (-Os default) GenL0.menu.opt.oslto=Smallest (-Os) with LTO GenL0.menu.opt.oslto.build.flags.optimize=-Os -flto @@ -2067,6 +2795,24 @@ Genericflight.menu.opt.o3lto.build.flags.optimize=-O3 -flto Genericflight.menu.opt.ogstd=Debug (-g) Genericflight.menu.opt.ogstd.build.flags.optimize=-g -Og +Garatronic.menu.opt.osstd=Smallest (-Os default) +Garatronic.menu.opt.oslto=Smallest (-Os) with LTO +Garatronic.menu.opt.oslto.build.flags.optimize=-Os -flto +Garatronic.menu.opt.o1std=Fast (-O1) +Garatronic.menu.opt.o1std.build.flags.optimize=-O1 +Garatronic.menu.opt.o1lto=Fast (-O1) with LTO +Garatronic.menu.opt.o1lto.build.flags.optimize=-O1 -flto +Garatronic.menu.opt.o2std=Faster (-O2) +Garatronic.menu.opt.o2std.build.flags.optimize=-O2 +Garatronic.menu.opt.o2lto=Faster (-O2) with LTO +Garatronic.menu.opt.o2lto.build.flags.optimize=-O2 -flto +Garatronic.menu.opt.o3std=Fastest (-O3) +Garatronic.menu.opt.o3std.build.flags.optimize=-O3 +Garatronic.menu.opt.o3lto=Fastest (-O3) with LTO +Garatronic.menu.opt.o3lto.build.flags.optimize=-O3 -flto +Garatronic.menu.opt.ogstd=Debug (-g) +Garatronic.menu.opt.ogstd.build.flags.optimize=-g -Og + Midatronics.menu.opt.osstd=Smallest (-Os default) Midatronics.menu.opt.oslto=Smallest (-Os) with LTO Midatronics.menu.opt.oslto.build.flags.optimize=-Os -flto @@ -2186,6 +2932,16 @@ GenF4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float GenF4.menu.rtlib.full=Newlib Standard GenF4.menu.rtlib.full.build.flags.ldspecs= +GenH7.menu.rtlib.nano=Newlib Nano (default) +GenH7.menu.rtlib.nanofp=Newlib Nano + Float Printf +GenH7.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float +GenH7.menu.rtlib.nanofs=Newlib Nano + Float Scanf +GenH7.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float +GenH7.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf +GenH7.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float +GenH7.menu.rtlib.full=Newlib Standard +GenH7.menu.rtlib.full.build.flags.ldspecs= + GenL0.menu.rtlib.nano=Newlib Nano (default) GenL0.menu.rtlib.nanofp=Newlib Nano + Float Printf GenL0.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float @@ -2236,6 +2992,16 @@ Genericflight.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _prin Genericflight.menu.rtlib.full=Newlib Standard Genericflight.menu.rtlib.full.build.flags.ldspecs= +Garatronic.menu.rtlib.nano=Newlib Nano (default) +Garatronic.menu.rtlib.nanofp=Newlib Nano + Float Printf +Garatronic.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float +Garatronic.menu.rtlib.nanofs=Newlib Nano + Float Scanf +Garatronic.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float +Garatronic.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf +Garatronic.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float +Garatronic.menu.rtlib.full=Newlib Standard +Garatronic.menu.rtlib.full.build.flags.ldspecs= + Midatronics.menu.rtlib.nano=Newlib Nano (default) Midatronics.menu.rtlib.nanofp=Newlib Nano + Float Printf Midatronics.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float From f183630475bacdf26a96c44df6f60475ba448c58 Mon Sep 17 00:00:00 2001 From: dds90 <40141422+dds90@users.noreply.github.com> Date: Wed, 22 Jul 2020 21:04:20 +0200 Subject: [PATCH 5/5] [New variant] STM32F407ZGT6 Mini https://github.com/stm32duino/Arduino_Core_STM32/issues/635 --- variants/Generic_F407Zx/PeripheralPins.c | 419 +++++++++++++++++++++++ variants/Generic_F407Zx/PinNamesVar.h | 50 +++ variants/Generic_F407Zx/ldscript.ld | 209 +++++++++++ variants/Generic_F407Zx/variant.cpp | 222 ++++++++++++ variants/Generic_F407Zx/variant.h | 223 ++++++++++++ 5 files changed, 1123 insertions(+) create mode 100644 variants/Generic_F407Zx/PeripheralPins.c create mode 100644 variants/Generic_F407Zx/PinNamesVar.h create mode 100644 variants/Generic_F407Zx/ldscript.ld create mode 100644 variants/Generic_F407Zx/variant.cpp create mode 100644 variants/Generic_F407Zx/variant.h diff --git a/variants/Generic_F407Zx/PeripheralPins.c b/variants/Generic_F407Zx/PeripheralPins.c new file mode 100644 index 0000000000..e83fb12e3c --- /dev/null +++ b/variants/Generic_F407Zx/PeripheralPins.c @@ -0,0 +1,419 @@ +/* + ******************************************************************************* + * Copyright (c) 2020, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + * Automatically generated from STM32F407Z(E-G)Tx.xml + */ +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Note: Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 + // {PA_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0 + // {PA_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 + // {PA_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1 + // {PA_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1 + // {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 + {PA_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2 + // {PA_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2 + // {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 + // {PA_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3 + {PA_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 + // {PA_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4 + // {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 + {PA_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 + // {PA_6, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 + // {PA_7, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7 + // {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 + {PB_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 + // {PB_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9 + // {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 + // {PC_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10 + {PC_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10 + // {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 + // {PC_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11 + {PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11 + // {PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 + {PC_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12 + // {PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12 + // {PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13 + // {PC_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13 + {PC_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13 + // {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14 + {PC_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14 + // {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 + {PC_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15 + // {PF_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_IN9 + // {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC3_IN14 + // {PF_5, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC3_IN15 + {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_IN4 + {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_IN5 + {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6 + {PF_9, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7 + // {PF_10, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + // {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + // {PF_0, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + // {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + // {PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {NC, NP, 0} +}; +#endif + +//*** PWM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_PWM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + // {PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + // {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + // {PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + // {PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + // {PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + // {PA_3, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + // {PA_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + // {PA_6, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + // {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + // {PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PA_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + // {PA_7, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + // {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + // {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PB_0, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + // {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + // {PB_1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + // {PB_8, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + // {PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + // {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + // {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + // {PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + // {PB_14, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1 + // {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + // {PB_15, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + // {PB_15, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)}, // TIM12_CH2 + // {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + // {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + // {PC_8, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 + {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + // {PC_9, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_5, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + {PE_6, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PF_6, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + {PF_7, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + {PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PF_9, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {NC, NP, 0} +}; +#endif + +//*** SERIAL *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + // {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + // {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + // {PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + // {PG_14, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + // {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + // {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + // {PC_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + // {PG_9, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + // {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + // {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PG_8, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PG_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PG_13, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + // {PG_15, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + // {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + // {PC_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + // {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + // {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + // {PC_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + // {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + // {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + // {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + // {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + // {PA_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + // {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + // {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {NC, NP, 0} +}; +#endif + +//*** CAN *** + +#ifdef HAL_CAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_RD[] = { + {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + // {PB_5, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PB_8, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + // {PB_12, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_0, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_CAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_TD[] = { + {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + // {PB_6, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + // {PB_13, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_1, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NP, 0} +}; +#endif + +//*** ETHERNET *** + +#ifdef HAL_ETH_MODULE_ENABLED +WEAK const PinMap PinMap_Ethernet[] = { + // {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS + // {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK|ETH_RX_CLK + // {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO + // {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL + // {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV|ETH_RX_DV + // {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 + // {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 + // {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + // {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + // {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER + // {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + // {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + // {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + // {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC + // {PC_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 + // {PC_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK + // {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 + // {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 + // {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + // {PG_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + // {PG_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + // {PG_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + // {PG_14, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + // {NC, NP, 0} +}; +#endif + +//*** No QUADSPI *** + +//*** USB *** + +#ifdef HAL_PCD_MODULE_ENABLED +WEAK const PinMap PinMap_USB_OTG_FS[] = { + // {PA_8, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF + // {PA_9, USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_FS_VBUS + // {PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID + // {PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM + {PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP + {NC, NP, 0} +}; +#endif + +#ifdef HAL_PCD_MODULE_ENABLED +WEAK const PinMap PinMap_USB_OTG_HS[] = { +#ifdef USE_USB_HS_IN_FS + // {PA_4, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_SOF + // {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_ID + // {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + // {PB_14, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DM + // {PB_15, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DP +#else + // {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D0 + // {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_CK + // {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D1 + // {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D2 + // {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D7 + // {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D3 + // {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D4 + // {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D5 + // {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D6 + // {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_STP + // {PC_2, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_DIR + // {PC_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_NXT +#endif /* USE_USB_HS_IN_FS */ + {NC, NP, 0} +}; +#endif + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + // {PB_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D4 + // {PB_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D5 + // {PC_6, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D6 + // {PC_7, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D7 + {PC_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D0 + {PC_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D1 + {PC_10, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D2 + {PC_11, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D3 + {PC_12, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDIO)}, // SDIO_CK + {PD_2, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDIO)}, // SDIO_CMD + {NC, NP, 0} +}; +#endif \ No newline at end of file diff --git a/variants/Generic_F407Zx/PinNamesVar.h b/variants/Generic_F407Zx/PinNamesVar.h new file mode 100644 index 0000000000..82ce190792 --- /dev/null +++ b/variants/Generic_F407Zx/PinNamesVar.h @@ -0,0 +1,50 @@ +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = NC, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = NC, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = NC, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif +/* USB */ +#ifdef USBCON + USB_OTG_FS_SOF = PA_8, + USB_OTG_FS_VBUS = PA_9, + USB_OTG_FS_ID = PA_10, + USB_OTG_FS_DM = PA_11, + USB_OTG_FS_DP = PA_12, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_SOF = PA_4, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ID = PB_12, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_VBUS = PB_13, + USB_OTG_HS_DM = PB_14, + USB_OTG_HS_DP = PB_15, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_ULPI_DIR = PC_2, + USB_OTG_HS_ULPI_NXT = PC_3, +#endif \ No newline at end of file diff --git a/variants/Generic_F407Zx/ldscript.ld b/variants/Generic_F407Zx/ldscript.ld new file mode 100644 index 0000000000..96092c7948 --- /dev/null +++ b/variants/Generic_F407Zx/ldscript.ld @@ -0,0 +1,209 @@ +/* +****************************************************************************** +** + +** File : LinkerScript.ld +** +** Author : Auto-generated by System Workbench for STM32 +** +** Abstract : Linker script for STM32F407ZGTx series +** 1024Kbytes FLASH and 192Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2019 STMicroelectronics

+** +** 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. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20020000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K +CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K +FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _siccmram = LOADADDR(.ccmram); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmram : + { + . = ALIGN(4); + _sccmram = .; /* create a global symbol at ccmram start */ + *(.ccmram) + *(.ccmram*) + + . = ALIGN(4); + _eccmram = .; /* create a global symbol at ccmram end */ + } >CCMRAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} + + diff --git a/variants/Generic_F407Zx/variant.cpp b/variants/Generic_F407Zx/variant.cpp new file mode 100644 index 0000000000..65d3e356c9 --- /dev/null +++ b/variants/Generic_F407Zx/variant.cpp @@ -0,0 +1,222 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ + +#include "pins_arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, //D0 + PA_1, //D1 + PA_2, //D2 + PA_3, //D3 + PA_4, //D4 + PA_5, //D5 + PA_6, //D6 + PA_7, //D7 + PA_8, //D8 + PA_9, //D9 + PA_10, //D10 + PA_11, //D11 + PA_12, //D12 + PA_13, //D13 + PA_14, //D14 + PA_15, //D15 + + PB_0, //D16 + PB_1, //D17 + PB_2, //D18 + PB_3, //D19 + PB_4, //D20 + PB_5, //D21 + PB_6, //D22 + PB_7, //D23 + PB_8, //D24 + PB_9, //D25 + PB_10, //D26 + PB_11, //D27 + PB_12, //D28 + PB_13, //D29 + PB_14, //D30 + PB_15, //D31 + + PC_0, //D32 + PC_1, //D33 + PC_2, //D34 + PC_3, //D35 + PC_4, //D36 + PC_5, //D37 + PC_6, //D38 + PC_7, //D39 + PC_8, //D40 + PC_9, //D41 + PC_10, //D42 + PC_11, //D43 + PC_12, //D44 + PC_13, //D45 + PC_14, //D46 + PC_15, //D47 + + PD_0, //D48 + PD_1, //D49 + PD_2, //D50 + PD_3, //D51 + PD_4, //D52 + PD_5, //D53 + PD_6, //D54 + PD_7, //D55 + PD_8, //D56 + PD_9, //D57 + PD_10, //D58 + PD_11, //D59 + PD_12, //D60 + PD_13, //D61 + PD_14, //D62 + PD_15, //D63 + + PE_0, //D64 + PE_1, //D65 + PE_2, //D66 + PE_3, //D67 + PE_4, //D68 + PE_5, //D69 + PE_6, //D70 + PE_7, //D71 + PE_8, //D72 + PE_9, //D73 + PE_10, //D74 + PE_11, //D75 + PE_12, //D76 + PE_13, //D77 + PE_14, //D78 + PE_15, //D79 + + PF_0, //D80 + PF_1, //D81 + PF_2, //D82 + PF_3, //D83 + PF_4, //D84 + PF_5, //D85 + PF_6, //D86 + PF_7, //D87 + PF_8, //D88 + PF_9, //D89 + PF_10, //D90 + PF_11, //D91 + PF_12, //D92 + PF_13, //D93 + PF_14, //D94 + PF_15, //D95 + + PG_0, //D96 + PG_1, //D97 + PG_2, //D98 + PG_3, //D99 + PG_4, //D100 + PG_5, //D101 + PG_6, //D102 + PG_7, //D103 + PG_8, //D104 + PG_9, //D105 + PG_10, //D106 + PG_11, //D107 + PG_12, //D108 + PG_13, //D109 + PG_14, //D110 + PG_15 //D111 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 32, // A10, PC0 + 33, // A11, PC1 + 34, // A12, PC2 + 35, // A13, PC3 + 36, // A14, PC4 + 37, // A15, PC5 + 86, // A16, PF6 + 87, // A17, PF7 + 88, // A18, PF8 + 89, // A19, PF9 + 90 // A20, PF10 +}; + +/******************************************************************************/ +/* PLL (clocked by HSE) used as System clock source */ +/******************************************************************************/ +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 25; + RCC_OscInitStruct.PLL.PLLN = 336; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 7; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; + PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } +} + +#ifdef __cplusplus +} +#endif diff --git a/variants/Generic_F407Zx/variant.h b/variants/Generic_F407Zx/variant.h new file mode 100644 index 0000000000..5a7d02302a --- /dev/null +++ b/variants/Generic_F407Zx/variant.h @@ -0,0 +1,223 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ + +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ +#define PA0 A0 +#define PA1 A1 +#define PA2 A2 +#define PA3 A3 +#define PA4 A4 +#define PA5 A5 +#define PA6 A6 +#define PA7 A7 +#define PA8 8 +#define PA9 9 +#define PA10 10 +#define PA11 11 +#define PA12 12 +#define PA13 13 +#define PA14 14 +#define PA15 15 + +#define PB0 A8 +#define PB1 A9 +#define PB2 18 +#define PB3 19 +#define PB4 20 +#define PB5 21 +#define PB6 22 +#define PB7 23 +#define PB8 24 +#define PB9 25 +#define PB10 26 +#define PB11 27 +#define PB12 28 +#define PB13 29 +#define PB14 30 +#define PB15 31 + +#define PC0 A10 +#define PC1 A11 +#define PC2 A12 +#define PC3 A13 +#define PC4 A14 +#define PC5 A15 +#define PC6 38 +#define PC7 39 +#define PC8 40 +#define PC9 41 +#define PC10 42 +#define PC11 43 +#define PC12 44 +#define PC13 45 +#define PC14 46 +#define PC15 47 + +#define PD0 48 +#define PD1 49 +#define PD2 50 +#define PD3 51 +#define PD4 52 +#define PD5 53 +#define PD6 54 +#define PD7 55 +#define PD8 56 +#define PD9 57 +#define PD10 58 +#define PD11 59 +#define PD12 60 +#define PD13 61 +#define PD14 62 +#define PD15 63 + +#define PE0 64 +#define PE1 65 +#define PE2 66 +#define PE3 67 +#define PE4 68 +#define PE5 69 +#define PE6 70 +#define PE7 71 +#define PE8 72 +#define PE9 73 +#define PE10 74 +#define PE11 75 +#define PE12 76 +#define PE13 77 +#define PE14 78 +#define PE15 79 + +#define PF0 80 +#define PF1 81 +#define PF2 82 +#define PF3 83 +#define PF4 84 +#define PF5 85 +#define PF6 A16 +#define PF7 A17 +#define PF8 A18 +#define PF9 A19 +#define PF10 A20 +#define PF11 91 +#define PF12 92 +#define PF13 93 +#define PF14 94 +#define PF15 95 + +#define PG0 96 +#define PG1 97 +#define PG2 98 +#define PG3 99 +#define PG4 100 +#define PG5 101 +#define PG6 102 +#define PG7 103 +#define PG8 104 +#define PG9 105 +#define PG10 106 +#define PG11 107 +#define PG12 108 +#define PG13 109 +#define PG14 110 +#define PG15 111 + +// This must be a literal +#define NUM_DIGITAL_PINS 112 +#define NUM_ANALOG_INPUTS 21 + +// On-board LED pin number +//#ifdef ARDUINO_VCCGND_F407ZGT6_MINI +#define LED_BUILTIN PG15 +//#endif + +// SPI Definitions +#define PIN_SPI_SS PC4 +#define PIN_SPI_MOSI PA7 +#define PIN_SPI_MISO PA6 +#define PIN_SPI_SCK PA5 + +// I2C Definitions +#define PIN_WIRE_SDA PB7 +#define PIN_WIRE_SCL PB6 + +// Timer Definitions (optional) +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#define TIMER_TONE TIM6 +#define TIMER_SERVO TIM7 + +// UART Definitions +// Define here Serial instance number to map on Serial generic name +#define SERIAL_UART_INSTANCE 1 + +// Default pin used for 'Serial' instance (ex: ST-Link) +// Mandatory for Firmata +#define PIN_SERIAL_RX PA10 +#define PIN_SERIAL_TX PA9 + +// Default pin used for 'Serial2' instance +#define PIN_SERIAL2_RX PA3 +#define PIN_SERIAL2_TX PA2 + +// Default pin used for 'Serial3' instance +#define PIN_SERIAL3_RX PB11 +#define PIN_SERIAL3_TX PB10 + +/* Extra HAL modules */ +//#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ +#define HSE_VALUE 25000000U +#define HAL_DAC_MODULE_ENABLED + +//#ifdef ARDUINO_VCCGND_F407ZGT6_MINI +#define HAL_SD_MODULE_ENABLED +// SD card slot Definitions +// SD detect signal can be defined if required +#define SD_DETECT_PIN PF10 +//#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 Serial1 +#endif + +#endif /* _VARIANT_ARDUINO_STM32_ */