From cfd236c6523fabf1d56d5abc146b33cc09fcb1a3 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Wed, 29 Mar 2023 14:45:01 -0500 Subject: [PATCH 01/23] feat:add support for SparkFun MicroMod STM32F405 --- CI/build/conf/cores_config.json | 1 + boards.txt | 48 +++ cmake/boards_db.cmake | 86 +++++ tools/platformio/boards_remap.json | 1 + .../STM32F4xx/F405RGT_F415RGT/CMakeLists.txt | 2 + .../PeripheralPins_MICROMOD_F405.c | 349 ++++++++++++++++++ .../F405RGT_F415RGT/variant_MICROMOD_F405.cpp | 163 ++++++++ .../F405RGT_F415RGT/variant_MICROMOD_F405.h | 246 ++++++++++++ 8 files changed, 896 insertions(+) create mode 100644 variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c create mode 100644 variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.cpp create mode 100644 variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h diff --git a/CI/build/conf/cores_config.json b/CI/build/conf/cores_config.json index 8aa38d2d4d..30c8d979a8 100644 --- a/CI/build/conf/cores_config.json +++ b/CI/build/conf/cores_config.json @@ -287,6 +287,7 @@ "MALYANM200_F103CB", "MALYANM300_F070CB", "MAPLEMINI_F103CB", + "MICROMOD_F405", "NUCLEO_F031K6", "NUCLEO_L031K6", "NUCLEO_L412KB", diff --git a/boards.txt b/boards.txt index e1b0c08197..eddeeeef72 100644 --- a/boards.txt +++ b/boards.txt @@ -10548,6 +10548,54 @@ Midatronics.menu.upload_method.dfuMethod.upload.protocol=2 Midatronics.menu.upload_method.dfuMethod.upload.options=-g Midatronics.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg + +################################################################################ +# SparkFun Boards + +SparkFun.name=SparkFun Boards + +SparkFun.build.core=arduino +SparkFun.build.board=SparkFun +SparkFun.build.variant_h=variant_{build.board}.h +SparkFun.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} +SparkFun.upload.maximum_size=0 +SparkFun.upload.maximum_data_size=0 + +# SparkFun MicroMod STM32F405 board +SparkFun.menu.pnum.MICROMOD_F405=SparkFun MicroMod STM32F405 +SparkFun.menu.pnum.MICROMOD_F405.upload.maximum_size=1048576 +SparkFun.menu.pnum.MICROMOD_F405.upload.maximum_data_size=131072 +SparkFun.menu.pnum.MICROMOD_F405.build.mcu=cortex-m4 +SparkFun.menu.pnum.MICROMOD_F405.build.fpu=-mfpu=fpv4-sp-d16 +SparkFun.menu.pnum.MICROMOD_F405.build.float-abi=-mfloat-abi=hard +SparkFun.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 +SparkFun.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx +SparkFun.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h +SparkFun.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT +SparkFun.menu.pnum.MICROMOD_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS +SparkFun.menu.pnum.MICROMOD_F405.build.cmsis_lib_gcc=arm_cortexM4lf_math + +# Upload menu +SparkFun.menu.upload_method.MassStorage=Mass Storage +SparkFun.menu.upload_method.MassStorage.upload.protocol= +SparkFun.menu.upload_method.MassStorage.upload.tool=massStorageCopy + +SparkFun.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) +SparkFun.menu.upload_method.swdMethod.upload.protocol=0 +SparkFun.menu.upload_method.swdMethod.upload.options=-g +SparkFun.menu.upload_method.swdMethod.upload.tool=stm32CubeProg + +SparkFun.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) +SparkFun.menu.upload_method.serialMethod.upload.protocol=1 +SparkFun.menu.upload_method.serialMethod.upload.options={serial.port.file} -s +SparkFun.menu.upload_method.serialMethod.upload.tool=stm32CubeProg + +SparkFun.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU) +SparkFun.menu.upload_method.dfuMethod.upload.protocol=2 +SparkFun.menu.upload_method.dfuMethod.upload.options=-g +SparkFun.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg + + ################################################################################ # Serialx activation Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial') diff --git a/cmake/boards_db.cmake b/cmake/boards_db.cmake index e5cc6cb50d..57423c4ac9 100644 --- a/cmake/boards_db.cmake +++ b/cmake/boards_db.cmake @@ -97836,6 +97836,92 @@ target_link_libraries(MAPLEMINI_F103CB_hid INTERFACE ) +# MICROMOD_F405 +# ----------------------------------------------------------------------------- + +set(MICROMOD_F405_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32F4xx/F405RGT_F415RGT") +set(MICROMOD_F405_MAXSIZE 1048576) +set(MICROMOD_F405_MAXDATASIZE 131072) +set(MICROMOD_F405_MCU cortex-m4) +set(MICROMOD_F405_FPCONF "-") +add_library(MICROMOD_F405 INTERFACE) +target_compile_options(MICROMOD_F405 INTERFACE + "SHELL:-DSTM32F405xx " + "SHELL:-DCUSTOM_PERIPHERAL_PINS" + "SHELL:" + "SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard" + -mcpu=${MICROMOD_F405_MCU} +) +target_compile_definitions(MICROMOD_F405 INTERFACE + "STM32F4xx" + "ARDUINO_MICROMOD_F405" + "BOARD_NAME=\"MICROMOD_F405\"" + "BOARD_ID=MICROMOD_F405" + "VARIANT_H=\"variant_MICROMOD_F405.h\"" +) +target_include_directories(MICROMOD_F405 INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/../system/STM32F4xx + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Inc + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Src + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/ + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/ + ${MICROMOD_F405_VARIANT_PATH} +) + +target_link_options(MICROMOD_F405 INTERFACE + "LINKER:--default-script=${MICROMOD_F405_VARIANT_PATH}/ldscript.ld" + "LINKER:--defsym=LD_FLASH_OFFSET=0" + "LINKER:--defsym=LD_MAX_SIZE=1048576" + "LINKER:--defsym=LD_MAX_DATA_SIZE=131072" + "SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard" + -mcpu=${MICROMOD_F405_MCU} +) +target_link_libraries(MICROMOD_F405 INTERFACE + arm_cortexM4lf_math +) + +add_library(MICROMOD_F405_serial_disabled INTERFACE) +target_compile_options(MICROMOD_F405_serial_disabled INTERFACE + "SHELL:" +) +add_library(MICROMOD_F405_serial_generic INTERFACE) +target_compile_options(MICROMOD_F405_serial_generic INTERFACE + "SHELL:-DHAL_UART_MODULE_ENABLED" +) +add_library(MICROMOD_F405_serial_none INTERFACE) +target_compile_options(MICROMOD_F405_serial_none INTERFACE + "SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE" +) +add_library(MICROMOD_F405_usb_CDC INTERFACE) +target_compile_options(MICROMOD_F405_usb_CDC INTERFACE + "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB" +) +add_library(MICROMOD_F405_usb_CDCgen INTERFACE) +target_compile_options(MICROMOD_F405_usb_CDCgen INTERFACE + "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC" +) +add_library(MICROMOD_F405_usb_HID INTERFACE) +target_compile_options(MICROMOD_F405_usb_HID INTERFACE + "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE" +) +add_library(MICROMOD_F405_usb_none INTERFACE) +target_compile_options(MICROMOD_F405_usb_none INTERFACE + "SHELL:" +) +add_library(MICROMOD_F405_xusb_FS INTERFACE) +target_compile_options(MICROMOD_F405_xusb_FS INTERFACE + "SHELL:" +) +add_library(MICROMOD_F405_xusb_HS INTERFACE) +target_compile_options(MICROMOD_F405_xusb_HS INTERFACE + "SHELL:-DUSE_USB_HS" +) +add_library(MICROMOD_F405_xusb_HSFS INTERFACE) +target_compile_options(MICROMOD_F405_xusb_HSFS INTERFACE + "SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS" +) + + # MKR_SHARKY # ----------------------------------------------------------------------------- diff --git a/tools/platformio/boards_remap.json b/tools/platformio/boards_remap.json index 09ce8a36de..1d7e86902e 100644 --- a/tools/platformio/boards_remap.json +++ b/tools/platformio/boards_remap.json @@ -21,6 +21,7 @@ "rak811_tracker_32": "RAK811_TRACKERA", "robotdyn_blackpill_f303cc": "BLACKPILL_F303CC", "rumba32_f446ve": "RUMBA32", + "sparkfun_micromod_stm32f405": "MICROMOD_F405", "sparky_v1": "SPARKY_F303CC", "steval_mksboxv1": "STEVAL_MKSBOX1V1", "stm32f4stamp": "GENERIC_F405RGTX", diff --git a/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt b/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt index bdcd38c5ab..6a6bc4a0f1 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt +++ b/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt @@ -22,7 +22,9 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL generic_clock.c PeripheralPins.c PeripheralPins_FEATHER_F405.c + PeripheralPins_MICROMOD_F405.c variant_FEATHER_F405.cpp + variant_MICROMOD_F405.cpp variant_generic.cpp ) target_link_libraries(variant_bin PUBLIC variant_usage) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c new file mode 100644 index 0000000000..3acfc882dd --- /dev/null +++ b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c @@ -0,0 +1,349 @@ +/* + ******************************************************************************* + * 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 + * + ******************************************************************************* + */ +#if defined(ARDUINO_MICROMOD_F405) +#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 + {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)}, + {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)}, + {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 + {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)}, + {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)}, + {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)}, + {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)}, + {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)}, + {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)}, + {NC, NP, 0} +}; +#endif + +//*** No ETHERNET *** + +//*** 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 + +#endif /* ARDUINO_MICROMOD_F405 */ diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.cpp b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.cpp new file mode 100644 index 0000000000..737229287e --- /dev/null +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.cpp @@ -0,0 +1,163 @@ +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#if defined(ARDUINO_MICROMOD_F405) + +#include "pins_arduino.h" + +// Pin number +// This array allows to wrap Arduino pin number(Dx or x) +// to STM32 PinName (PX_n) +const PinName digitalPin[] = { + PC_0, //D0 + PC_1, //D1 + PC_6, //PWM0 + PC_7, //PWM1 + PA_2, //TX1 + PA_3, //RX1 + PD_2, //G0 + PA_8, //G1 + PA_0, //G2 + PC_8, //G3 + PC_9, //G4 + PC_13, //G5 + PC_2, //G6 + PB_13, //G10 HOST_VBUS + PB_12, //G11 HOST_ID + PB_4, //AUD_OUT + PB_5, //AUD_IN + PA_4, //AUD_LRCLK + PB_3, //AUD_BCLK + PB_9, //CAN_TX + PB_8, //CAN_RX + PB_10, //SCL + PB_11, //SDA + PB_1, //INT + PB_6, //SCL1 + PB_7, //SDA1 + PA_5, //SCK + PA_7, //COPI + PA_6, //CIPO + PC_4, //CS + PB_14, //HOST_D- + PB_15, //HOST_D+ + PA_15, //STAT + PC_5, //A0 + PB_0, //A1 + PA_1, //BATT_VIN/3 + PC_14, //OSC32 + PC_15, //OSC32 + PA_11, //D+ + PA_12, //D- + PA_13, //SWDIO + PA_14, //SWCLK + PC_10, //FLASH_SCK + PC_11, //FLASH_SDO + PC_12, //FLASH_SDI + PC_3 //FLASH_CS +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 33, // A0, PC5 + 34, // A1, PB0 + 35, // A2, PA1 + 8, // A3, PA0 + 4, // A4, PA2 + 5, // A5, PA3 + 17, // A6, PA4 + 26, // A7, PA5 + 28, // A8, PA6 + 27, // A9, PA7 + 23, // A10, PB1 + 0, // A11, PC0 + 1, // A12, PC1 + 12, // A13, PC2 + 29 // A14, PC4 +}; + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; + + /**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_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 6; + RCC_OscInitStruct.PLL.PLLN = 168; + 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(); + } + + /* Ensure CCM RAM clock is enabled */ + __HAL_RCC_CCMDATARAMEN_CLK_ENABLE(); + +} + +#ifdef __cplusplus +} +#endif + +#endif /* ARDUINO_MICROMOD_F405 */ diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h new file mode 100644 index 0000000000..93358d50fd --- /dev/null +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -0,0 +1,246 @@ +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#pragma once + +#define USBD_VID 0x1B4F +#define USBD_PID 0x0029 + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ +#define PC0 0 //D0 +#define PC1 1 //D1 + +#define PC6 2 //PWM0 +#define PC7 3 //PWM1 + +#define PA2 4 //TX1 +#define PA3 5 //RX1 + +#define PD2 6 //G0 +#define PA8 7 //G1 +#define PA0 8 //G2 +#define PC8 9 //G3 +#define PC9 10 //G4 +#define PC13 11 //G5 +#define PC2 12 //G6 +#define PB13 13 //G10 - HOST_VBUS +#define PB12 14 //G11 - HOST_ID + +#define PB4 15 //AUD_OUT +#define PB5 16 //AUD_IN +#define PA4 17 //AUD_LRCLK +#define PB3 18 //AUD_BCLK + +#define PB9 19 //CAN_TX +#define PB8 20 //CAN_RX + +#define PB10 21 //SCL +#define PB11 22 //SDA +#define PB1 23 //INT + +#define PB6 24 //SCL1 +#define PB7 25 //SDA1 + +#define PA5 26 //SCK +#define PA7 27 //COPI +#define PA6 28 //CIPO +#define PC4 29 //CS + +#define PB14 30 //HOST_D- +#define PB15 31 //HOST_D+ + +#define PA15 32 //STAT LED + +#define PC5 33 //A0 +#define PB0 34 //A1 +#define PA1 35 //BATT_VIN/3 + +#define PC14 36 //OSC32 +#define PC15 37 //OSC32 + +#define PA11 38 //D+ +#define PA12 39 //D- + +#define PA13 40 //SWDIO +#define PA14 41 //SWCLK + +#define PC10 42 //FLASH_SCK +#define PC11 43 //FLASH_CIPO +#define PC12 44 //FLASH_COPI +#define PC3 45 //FLASH_CS + +// This must be a literal +#define NUM_DIGITAL_PINS 46 +// This must be a literal with a value less than or equal to MAX_ANALOG_INPUTS +#define NUM_ANALOG_INPUTS 15 + +// On-board LED pin number +#ifndef LED_BUILTIN + #define LED_BUILTIN PA15 +#endif + +// No user button +#ifndef USER_BTN + #define USER_BTN PNUM_NOT_DEFINED +#endif + +// Pulse Width Modulation +#define PWM0 PC6 +#define PWM1 PC7 + +// General Purpose +#define G0 PD2 +#define G1 PA8 +#define G2 PA0 +#define G3 PC8 +#define G4 PC9 +#define G5 PC13 +#define G6 PC2 +#define G10 PB13 +#define G11 PB12 + +// I2S Interface +#define AUD_OUT PB4 +#define AUD_IN PB5 +#define AUD_LRCLK PA4 +#define AUD_BCLK PB3 + +// Analog Pins +#define BATT_VIN PA1 + +// UART1 +#define TX1 PA2 +#define RX1 PA3 + +// Can Bus +#define CAN_RX PB8 +#define CAN_TX PB9 + +// SWD +#define SWDIO PA13 +#define SWDCK PA14 + +// USB Host +#define HOST_DM PB14 +#define HOST_DP PB15 +#define HOST_VBUS PB13 +#define HOST_ID PB12 + +// SPI Definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PC4 +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA7 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA5 +#endif + +// SPI FLASH +#define FLASH_SDO PC11 +#define FLASH_SDI PC12 +#define FLASH_SCK PC10 +#define FLASH_CS PC3 + +// I2C +#define PIN_WIRE_SCL PB10 +#define PIN_WIRE_SDA PB11 +#define INT PB1 + +#define SCL1 PB6 +#define SDA1 PB7 + + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM6 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM7 +#endif + +// UART Definitions +// Define here Serial instance number to map on Serial generic name +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 3 +#endif + +// Default pin used for 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA3 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA2 +#endif + +/* HAL configuration */ +#define HSE_VALUE 12000000U + +/* Extra HAL modules */ +#if !defined(HAL_DAC_MODULE_DISABLED) + #define HAL_DAC_MODULE_ENABLED +#endif +#if !defined(HAL_SD_MODULE_DISABLED) + #define HAL_SD_MODULE_ENABLED +#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. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial1 + #endif +#endif \ No newline at end of file From 2f9ff6da11e1e25a2c6e46e0a7eebf008a375b25 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Wed, 29 Mar 2023 14:50:52 -0500 Subject: [PATCH 02/23] add board to README --- README.md | 69 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 7624caefc9..a8cede0013 100644 --- a/README.md +++ b/README.md @@ -49,37 +49,43 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d ## 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 STM32C0 boards](#generic-stm32c0-boards) - - [Generic STM32F0 boards](#generic-stm32f0-boards) - - [Generic STM32F1 boards](#generic-stm32f1-boards) - - [Generic STM32F2 boards](#generic-stm32f2-boards) - - [Generic STM32F3 boards](#generic-stm32f3-boards) - - [Generic STM32F4 boards](#generic-stm32f4-boards) - - [Generic STM32F7 boards](#generic-stm32f7-boards) - - [Generic STM32G0 boards](#generic-stm32g0-boards) - - [Generic STM32G4 boards](#generic-stm32g4-boards) - - [Generic STM32H7 boards](#generic-stm32h7-boards) - - [Generic STM32L0 boards](#generic-stm32l0-boards) - - [Generic STM32L1 boards](#generic-stm32l1-boards) - - [Generic STM32L4 boards](#generic-stm32l4-boards) - - [Generic STM32L5 boards](#generic-stm32l5-boards) - - [Generic STM32U5 boards](#generic-stm32u5-boards) - - [Generic STM32WB boards](#generic-stm32wb-boards) - - [Generic STM32WL boards](#generic-stm32wb-boards) - - [3D printer boards](#3d-printer-boards) - - [Blues Wireless boards](#blues-wireless-boards) - - [Elecgator boards](#elecgator-boards) - - [Electronic Speed Controller boards](#electronic-speed-controller-boards) - - [Garatronics boards](#Garatronic/McHobby-boards) - - [Generic flight controllers](#generic-flight-controllers) - - [LoRa boards](#lora-boards) - - [Midatronics boards](#midatronics-boards) +- [Arduino core support for STM32 based boards](#arduino-core-support-for-stm32-based-boards) + - [Introduction](#introduction) + - [Getting Started](#getting-started) + - [Supported boards](#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 STM32C0 boards](#generic-stm32c0-boards) + - [Generic STM32F0 boards](#generic-stm32f0-boards) + - [Generic STM32F1 boards](#generic-stm32f1-boards) + - [Generic STM32F2 boards](#generic-stm32f2-boards) + - [Generic STM32F3 boards](#generic-stm32f3-boards) + - [Generic STM32F4 boards](#generic-stm32f4-boards) + - [Generic STM32F7 boards](#generic-stm32f7-boards) + - [Generic STM32G0 boards](#generic-stm32g0-boards) + - [Generic STM32G4 boards](#generic-stm32g4-boards) + - [Generic STM32H7 boards](#generic-stm32h7-boards) + - [Generic STM32L0 boards](#generic-stm32l0-boards) + - [Generic STM32L1 boards](#generic-stm32l1-boards) + - [Generic STM32L4 boards](#generic-stm32l4-boards) + - [Generic STM32L5 boards](#generic-stm32l5-boards) + - [Generic STM32U5 boards](#generic-stm32u5-boards) + - [Generic STM32WB boards](#generic-stm32wb-boards) + - [Generic STM32WL boards](#generic-stm32wl-boards) + - [3D printer boards](#3d-printer-boards) + - [Blues Wireless boards](#blues-wireless-boards) + - [Elecgator boards](#elecgator-boards) + - [Electronic Speed Controller boards](#electronic-speed-controller-boards) + - [Garatronic/McHobby boards](#garatronicmchobby-boards) + - [Generic flight controllers](#generic-flight-controllers) + - [LoRa boards](#lora-boards) + - [Midatronics boards](#midatronics-boards) + - [Next release](#next-release) + - [Troubleshooting](#troubleshooting) ### [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 @@ -320,6 +326,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d | Status | Device(s) | Name | Release | Notes | | :----: | :-------: | ---- | :-----: | :---- | | :green_heart: | STM32F405RG | [Adafruit Feather STM32F405 Express](https://www.adafruit.com/product/4382) | *1.8.0* | | +| :green_heart: | STM32F405RG | [SparkFun MicroMod STM32](https://www.sparkfun.com/products/21326) | *2.5.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/WeActStudio/WeActStudio.MiniSTM32F4x1) | | :green_heart: | STM32F401CE | [WeAct Black Pill](https://stm32-base.org/boards/STM32F401CEU6-WeAct-Black-Pill-V3.0) | *2.4.0* | [More info](https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1) | | :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/WeActStudio/WeActStudio.MiniSTM32F4x1) | From 4be7f9e934c1e6e2da19d87710b896dc339ad375 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Wed, 29 Mar 2023 16:09:55 -0500 Subject: [PATCH 03/23] tweak:add series to boards.txt --- boards.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/boards.txt b/boards.txt index eddeeeef72..40f45b4804 100644 --- a/boards.txt +++ b/boards.txt @@ -10569,6 +10569,7 @@ SparkFun.menu.pnum.MICROMOD_F405.build.mcu=cortex-m4 SparkFun.menu.pnum.MICROMOD_F405.build.fpu=-mfpu=fpv4-sp-d16 SparkFun.menu.pnum.MICROMOD_F405.build.float-abi=-mfloat-abi=hard SparkFun.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 +SparkFun.menu.pnum.MICROMOD_F405.build.series=STM32F4xx SparkFun.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx SparkFun.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h SparkFun.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT From ec51486386388799dd8fb6a7b80898218675562b Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Wed, 29 Mar 2023 16:22:42 -0500 Subject: [PATCH 04/23] fix formatting issues from astyle check --- .../PeripheralPins_MICROMOD_F405.c | 30 +++++++++---------- .../F405RGT_F415RGT/variant_MICROMOD_F405.h | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c index 3acfc882dd..4ec8dd9583 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c +++ b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c @@ -24,46 +24,46 @@ #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, 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, 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, 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, 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, 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, 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, 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, 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_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, 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, 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, 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, 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 + {PC_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15 {NC, NP, 0} }; #endif diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index 93358d50fd..57f88f70cd 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -29,8 +29,8 @@ */ #pragma once -#define USBD_VID 0x1B4F -#define USBD_PID 0x0029 +#define USBD_VID 0x1B4F +#define USBD_PID 0x0029 /*---------------------------------------------------------------------------- * Pins From eb3a7c88be645145f03dee3017cc58fee9a714d6 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 08:27:59 -0500 Subject: [PATCH 05/23] Update README.md Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a8cede0013..9316b8f960 100644 --- a/README.md +++ b/README.md @@ -326,7 +326,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d | Status | Device(s) | Name | Release | Notes | | :----: | :-------: | ---- | :-----: | :---- | | :green_heart: | STM32F405RG | [Adafruit Feather STM32F405 Express](https://www.adafruit.com/product/4382) | *1.8.0* | | -| :green_heart: | STM32F405RG | [SparkFun MicroMod STM32](https://www.sparkfun.com/products/21326) | *2.5.0* | | +| :yellow_heart: | STM32F405RG | [SparkFun MicroMod STM32](https://www.sparkfun.com/products/21326) | **2.6.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/WeActStudio/WeActStudio.MiniSTM32F4x1) | | :green_heart: | STM32F401CE | [WeAct Black Pill](https://stm32-base.org/boards/STM32F401CEU6-WeAct-Black-Pill-V3.0) | *2.4.0* | [More info](https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1) | | :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/WeActStudio/WeActStudio.MiniSTM32F4x1) | From 85232db665db7f60bc020ce208d8213a214a9dc5 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 08:35:13 -0500 Subject: [PATCH 06/23] Update variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index 57f88f70cd..02e2864392 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -79,8 +79,8 @@ #define PA15 32 //STAT LED -#define PC5 33 //A0 -#define PB0 34 //A1 +#define PC5 PIN_A0 +#define PB0 PIN_A1 #define PA1 35 //BATT_VIN/3 #define PC14 36 //OSC32 From b74bb7c1e8f233b2c43e816f1c79204bf6ebc264 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 08:42:04 -0500 Subject: [PATCH 07/23] name analog pins --- .../F405RGT_F415RGT/variant_MICROMOD_F405.h | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index 02e2864392..32f287bc08 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -35,67 +35,67 @@ /*---------------------------------------------------------------------------- * Pins *----------------------------------------------------------------------------*/ -#define PC0 0 //D0 -#define PC1 1 //D1 +#define PC0 PIN_A1 //D0 +#define PC1 PIN_A12 //D1 -#define PC6 2 //PWM0 -#define PC7 3 //PWM1 +#define PC6 2 //PWM0 +#define PC7 3 //PWM1 -#define PA2 4 //TX1 -#define PA3 5 //RX1 +#define PA2 PIN_A4 //TX1 +#define PA3 PIN_A5 //RX1 -#define PD2 6 //G0 -#define PA8 7 //G1 -#define PA0 8 //G2 -#define PC8 9 //G3 -#define PC9 10 //G4 -#define PC13 11 //G5 -#define PC2 12 //G6 -#define PB13 13 //G10 - HOST_VBUS -#define PB12 14 //G11 - HOST_ID +#define PD2 6 //G0 +#define PA8 7 //G1 +#define PA0 PIN_A3 //G2 +#define PC8 9 //G3 +#define PC9 10 //G4 +#define PC13 11 //G5 +#define PC2 PIN_A13 //G6 +#define PB13 13 //G10 - HOST_VBUS +#define PB12 14 //G11 - HOST_ID -#define PB4 15 //AUD_OUT -#define PB5 16 //AUD_IN -#define PA4 17 //AUD_LRCLK -#define PB3 18 //AUD_BCLK +#define PB4 15 //AUD_OUT +#define PB5 16 //AUD_IN +#define PA4 PIN_A6 //AUD_LRCLK +#define PB3 18 //AUD_BCLK -#define PB9 19 //CAN_TX -#define PB8 20 //CAN_RX +#define PB9 19 //CAN_TX +#define PB8 20 //CAN_RX -#define PB10 21 //SCL -#define PB11 22 //SDA -#define PB1 23 //INT +#define PB10 21 //SCL +#define PB11 22 //SDA +#define PB1 PIN_A10 //INT -#define PB6 24 //SCL1 -#define PB7 25 //SDA1 +#define PB6 24 //SCL1 +#define PB7 25 //SDA1 -#define PA5 26 //SCK -#define PA7 27 //COPI -#define PA6 28 //CIPO -#define PC4 29 //CS +#define PA5 PIN_A7 //SCK +#define PA7 PIN_A9 //COPI +#define PA6 PIN_A8 //CIPO +#define PC4 PIN_A14 //CS -#define PB14 30 //HOST_D- -#define PB15 31 //HOST_D+ +#define PB14 30 //HOST_D- +#define PB15 31 //HOST_D+ -#define PA15 32 //STAT LED +#define PA15 32 //STAT LED #define PC5 PIN_A0 #define PB0 PIN_A1 -#define PA1 35 //BATT_VIN/3 +#define PA1 PIN_A2 //BATT_VIN/3 -#define PC14 36 //OSC32 -#define PC15 37 //OSC32 +#define PC14 36 //OSC32 +#define PC15 37 //OSC32 -#define PA11 38 //D+ -#define PA12 39 //D- +#define PA11 38 //D+ +#define PA12 39 //D- -#define PA13 40 //SWDIO -#define PA14 41 //SWCLK +#define PA13 40 //SWDIO +#define PA14 41 //SWCLK -#define PC10 42 //FLASH_SCK -#define PC11 43 //FLASH_CIPO -#define PC12 44 //FLASH_COPI -#define PC3 45 //FLASH_CS +#define PC10 42 //FLASH_SCK +#define PC11 43 //FLASH_CIPO +#define PC12 44 //FLASH_COPI +#define PC3 45 //FLASH_CS // This must be a literal #define NUM_DIGITAL_PINS 46 From 26aed3e612073fff6dbda962a12a84a7cf45342c Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 08:47:24 -0500 Subject: [PATCH 08/23] fix README TOC --- README.md | 69 +++++++++++++++++++++++++------------------------------ 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 9316b8f960..b6e40dd4fd 100644 --- a/README.md +++ b/README.md @@ -49,44 +49,37 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d ## Supported boards -- [Arduino core support for STM32 based boards](#arduino-core-support-for-stm32-based-boards) - - [Introduction](#introduction) - - [Getting Started](#getting-started) - - [Supported boards](#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 STM32C0 boards](#generic-stm32c0-boards) - - [Generic STM32F0 boards](#generic-stm32f0-boards) - - [Generic STM32F1 boards](#generic-stm32f1-boards) - - [Generic STM32F2 boards](#generic-stm32f2-boards) - - [Generic STM32F3 boards](#generic-stm32f3-boards) - - [Generic STM32F4 boards](#generic-stm32f4-boards) - - [Generic STM32F7 boards](#generic-stm32f7-boards) - - [Generic STM32G0 boards](#generic-stm32g0-boards) - - [Generic STM32G4 boards](#generic-stm32g4-boards) - - [Generic STM32H7 boards](#generic-stm32h7-boards) - - [Generic STM32L0 boards](#generic-stm32l0-boards) - - [Generic STM32L1 boards](#generic-stm32l1-boards) - - [Generic STM32L4 boards](#generic-stm32l4-boards) - - [Generic STM32L5 boards](#generic-stm32l5-boards) - - [Generic STM32U5 boards](#generic-stm32u5-boards) - - [Generic STM32WB boards](#generic-stm32wb-boards) - - [Generic STM32WL boards](#generic-stm32wl-boards) - - [3D printer boards](#3d-printer-boards) - - [Blues Wireless boards](#blues-wireless-boards) - - [Elecgator boards](#elecgator-boards) - - [Electronic Speed Controller boards](#electronic-speed-controller-boards) - - [Garatronic/McHobby boards](#garatronicmchobby-boards) - - [Generic flight controllers](#generic-flight-controllers) - - [LoRa boards](#lora-boards) - - [Midatronics boards](#midatronics-boards) - - [Next release](#next-release) - - [Troubleshooting](#troubleshooting) - + - [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 STM32C0 boards](#generic-stm32c0-boards) + - [Generic STM32F0 boards](#generic-stm32f0-boards) + - [Generic STM32F1 boards](#generic-stm32f1-boards) + - [Generic STM32F2 boards](#generic-stm32f2-boards) + - [Generic STM32F3 boards](#generic-stm32f3-boards) + - [Generic STM32F4 boards](#generic-stm32f4-boards) + - [Generic STM32F7 boards](#generic-stm32f7-boards) + - [Generic STM32G0 boards](#generic-stm32g0-boards) + - [Generic STM32G4 boards](#generic-stm32g4-boards) + - [Generic STM32H7 boards](#generic-stm32h7-boards) + - [Generic STM32L0 boards](#generic-stm32l0-boards) + - [Generic STM32L1 boards](#generic-stm32l1-boards) + - [Generic STM32L4 boards](#generic-stm32l4-boards) + - [Generic STM32L5 boards](#generic-stm32l5-boards) + - [Generic STM32U5 boards](#generic-stm32u5-boards) + - [Generic STM32WB boards](#generic-stm32wb-boards) + - [Generic STM32WL boards](#generic-stm32wb-boards) + - [3D printer boards](#3d-printer-boards) + - [Blues Wireless boards](#blues-wireless-boards) + - [Elecgator boards](#elecgator-boards) + - [Electronic Speed Controller boards](#electronic-speed-controller-boards) + - [Garatronics boards](#Garatronic/McHobby-boards) + - [Generic flight controllers](#generic-flight-controllers) + - [LoRa boards](#lora-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 From 1d34a577ca3cb0d9b684929481ecc8a22a0e0c7e Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 08:49:40 -0500 Subject: [PATCH 09/23] simplify boards.txt --- boards.txt | 63 +++++++++++++----------------------------------------- 1 file changed, 15 insertions(+), 48 deletions(-) diff --git a/boards.txt b/boards.txt index 40f45b4804..270110356f 100644 --- a/boards.txt +++ b/boards.txt @@ -3698,6 +3698,21 @@ GenF4.menu.pnum.FEATHER_F405.build.variant_h=variant_{build.board}.h GenF4.menu.pnum.FEATHER_F405.build.variant=STM32F4xx/F405RGT_F415RGT GenF4.menu.pnum.FEATHER_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS +# SparkFun MicroMod STM32F405 board +GenF4.menu.pnum.MICROMOD_F405=SparkFun MicroMod STM32F405 +GenF4.menu.pnum.MICROMOD_F405.upload.maximum_size=1048576 +GenF4.menu.pnum.MICROMOD_F405.upload.maximum_data_size=131072 +GenF4.menu.pnum.MICROMOD_F405.build.mcu=cortex-m4 +GenF4.menu.pnum.MICROMOD_F405.build.fpu=-mfpu=fpv4-sp-d16 +GenF4.menu.pnum.MICROMOD_F405.build.float-abi=-mfloat-abi=hard +GenF4.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 +GenF4.menu.pnum.MICROMOD_F405.build.series=STM32F4xx +GenF4.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx +GenF4.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h +GenF4.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT +GenF4.menu.pnum.MICROMOD_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS +GenF4.menu.pnum.MICROMOD_F405.build.cmsis_lib_gcc=arm_cortexM4lf_math + # ThunderPack F411xxE # https://github.com/jgillick/ThunderPack/tree/STM32F4 GenF4.menu.pnum.THUNDERPACK_F411=ThunderPack v1.1+ @@ -10549,54 +10564,6 @@ Midatronics.menu.upload_method.dfuMethod.upload.options=-g Midatronics.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg -################################################################################ -# SparkFun Boards - -SparkFun.name=SparkFun Boards - -SparkFun.build.core=arduino -SparkFun.build.board=SparkFun -SparkFun.build.variant_h=variant_{build.board}.h -SparkFun.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -SparkFun.upload.maximum_size=0 -SparkFun.upload.maximum_data_size=0 - -# SparkFun MicroMod STM32F405 board -SparkFun.menu.pnum.MICROMOD_F405=SparkFun MicroMod STM32F405 -SparkFun.menu.pnum.MICROMOD_F405.upload.maximum_size=1048576 -SparkFun.menu.pnum.MICROMOD_F405.upload.maximum_data_size=131072 -SparkFun.menu.pnum.MICROMOD_F405.build.mcu=cortex-m4 -SparkFun.menu.pnum.MICROMOD_F405.build.fpu=-mfpu=fpv4-sp-d16 -SparkFun.menu.pnum.MICROMOD_F405.build.float-abi=-mfloat-abi=hard -SparkFun.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 -SparkFun.menu.pnum.MICROMOD_F405.build.series=STM32F4xx -SparkFun.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx -SparkFun.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h -SparkFun.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT -SparkFun.menu.pnum.MICROMOD_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS -SparkFun.menu.pnum.MICROMOD_F405.build.cmsis_lib_gcc=arm_cortexM4lf_math - -# Upload menu -SparkFun.menu.upload_method.MassStorage=Mass Storage -SparkFun.menu.upload_method.MassStorage.upload.protocol= -SparkFun.menu.upload_method.MassStorage.upload.tool=massStorageCopy - -SparkFun.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) -SparkFun.menu.upload_method.swdMethod.upload.protocol=0 -SparkFun.menu.upload_method.swdMethod.upload.options=-g -SparkFun.menu.upload_method.swdMethod.upload.tool=stm32CubeProg - -SparkFun.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) -SparkFun.menu.upload_method.serialMethod.upload.protocol=1 -SparkFun.menu.upload_method.serialMethod.upload.options={serial.port.file} -s -SparkFun.menu.upload_method.serialMethod.upload.tool=stm32CubeProg - -SparkFun.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU) -SparkFun.menu.upload_method.dfuMethod.upload.protocol=2 -SparkFun.menu.upload_method.dfuMethod.upload.options=-g -SparkFun.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg - - ################################################################################ # Serialx activation Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial') From eb295283235d2575a3b5ec12f79026c282d460df Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:29:00 -0500 Subject: [PATCH 10/23] Update boards.txt Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- boards.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/boards.txt b/boards.txt index 270110356f..8916e4f8d2 100644 --- a/boards.txt +++ b/boards.txt @@ -3702,9 +3702,6 @@ GenF4.menu.pnum.FEATHER_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS GenF4.menu.pnum.MICROMOD_F405=SparkFun MicroMod STM32F405 GenF4.menu.pnum.MICROMOD_F405.upload.maximum_size=1048576 GenF4.menu.pnum.MICROMOD_F405.upload.maximum_data_size=131072 -GenF4.menu.pnum.MICROMOD_F405.build.mcu=cortex-m4 -GenF4.menu.pnum.MICROMOD_F405.build.fpu=-mfpu=fpv4-sp-d16 -GenF4.menu.pnum.MICROMOD_F405.build.float-abi=-mfloat-abi=hard GenF4.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 GenF4.menu.pnum.MICROMOD_F405.build.series=STM32F4xx GenF4.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx From 4353450feb4d75c9d2a51495187e30b2fbe1f759 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:29:14 -0500 Subject: [PATCH 11/23] Update boards.txt Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- boards.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/boards.txt b/boards.txt index 8916e4f8d2..908513c8f3 100644 --- a/boards.txt +++ b/boards.txt @@ -3703,7 +3703,6 @@ GenF4.menu.pnum.MICROMOD_F405=SparkFun MicroMod STM32F405 GenF4.menu.pnum.MICROMOD_F405.upload.maximum_size=1048576 GenF4.menu.pnum.MICROMOD_F405.upload.maximum_data_size=131072 GenF4.menu.pnum.MICROMOD_F405.build.board=MICROMOD_F405 -GenF4.menu.pnum.MICROMOD_F405.build.series=STM32F4xx GenF4.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx GenF4.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h GenF4.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT From e91721694508ee72481a692fa8c51caafc53b612 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:29:22 -0500 Subject: [PATCH 12/23] Update boards.txt Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- boards.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/boards.txt b/boards.txt index 908513c8f3..f747469842 100644 --- a/boards.txt +++ b/boards.txt @@ -3707,7 +3707,6 @@ GenF4.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx GenF4.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h GenF4.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT GenF4.menu.pnum.MICROMOD_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS -GenF4.menu.pnum.MICROMOD_F405.build.cmsis_lib_gcc=arm_cortexM4lf_math # ThunderPack F411xxE # https://github.com/jgillick/ThunderPack/tree/STM32F4 From 85d17a6ec76dd8a44dcfbafd00fef1199bedb756 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:29:32 -0500 Subject: [PATCH 13/23] Update boards.txt Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- boards.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/boards.txt b/boards.txt index f747469842..089e265b7a 100644 --- a/boards.txt +++ b/boards.txt @@ -10558,7 +10558,6 @@ Midatronics.menu.upload_method.dfuMethod.upload.protocol=2 Midatronics.menu.upload_method.dfuMethod.upload.options=-g Midatronics.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg - ################################################################################ # Serialx activation Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial') From 69594a3657357b8363e45acf87edcd8c275d57f3 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:30:09 -0500 Subject: [PATCH 14/23] Update variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- .../F405RGT_F415RGT/variant_MICROMOD_F405.h | 160 +++++++++--------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index 32f287bc08..b1aa397db0 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -35,67 +35,67 @@ /*---------------------------------------------------------------------------- * Pins *----------------------------------------------------------------------------*/ -#define PC0 PIN_A1 //D0 -#define PC1 PIN_A12 //D1 +#define PC0 PIN_A1 //D0 +#define PC1 PIN_A12 //D1 -#define PC6 2 //PWM0 -#define PC7 3 //PWM1 +#define PC6 2 //PWM0 +#define PC7 3 //PWM1 -#define PA2 PIN_A4 //TX1 -#define PA3 PIN_A5 //RX1 +#define PA2 PIN_A4 //TX1 +#define PA3 PIN_A5 //RX1 -#define PD2 6 //G0 -#define PA8 7 //G1 -#define PA0 PIN_A3 //G2 -#define PC8 9 //G3 -#define PC9 10 //G4 -#define PC13 11 //G5 -#define PC2 PIN_A13 //G6 -#define PB13 13 //G10 - HOST_VBUS -#define PB12 14 //G11 - HOST_ID +#define PD2 6 //G0 +#define PA8 7 //G1 +#define PA0 PIN_A3 //G2 +#define PC8 9 //G3 +#define PC9 10 //G4 +#define PC13 11 //G5 +#define PC2 PIN_A13 //G6 +#define PB13 13 //G10 - HOST_VBUS +#define PB12 14 //G11 - HOST_ID -#define PB4 15 //AUD_OUT -#define PB5 16 //AUD_IN -#define PA4 PIN_A6 //AUD_LRCLK -#define PB3 18 //AUD_BCLK +#define PB4 15 //AUD_OUT +#define PB5 16 //AUD_IN +#define PA4 PIN_A6 //AUD_LRCLK +#define PB3 18 //AUD_BCLK -#define PB9 19 //CAN_TX -#define PB8 20 //CAN_RX +#define PB9 19 //CAN_TX +#define PB8 20 //CAN_RX -#define PB10 21 //SCL -#define PB11 22 //SDA -#define PB1 PIN_A10 //INT +#define PB10 21 //SCL +#define PB11 22 //SDA +#define PB1 PIN_A10 //INT -#define PB6 24 //SCL1 -#define PB7 25 //SDA1 +#define PB6 24 //SCL1 +#define PB7 25 //SDA1 -#define PA5 PIN_A7 //SCK -#define PA7 PIN_A9 //COPI -#define PA6 PIN_A8 //CIPO -#define PC4 PIN_A14 //CS +#define PA5 PIN_A7 //SCK +#define PA7 PIN_A9 //COPI +#define PA6 PIN_A8 //CIPO +#define PC4 PIN_A14 //CS -#define PB14 30 //HOST_D- -#define PB15 31 //HOST_D+ +#define PB14 30 //HOST_D- +#define PB15 31 //HOST_D+ -#define PA15 32 //STAT LED +#define PA15 32 //STAT LED -#define PC5 PIN_A0 -#define PB0 PIN_A1 -#define PA1 PIN_A2 //BATT_VIN/3 +#define PC5 PIN_A0 +#define PB0 PIN_A1 +#define PA1 PIN_A2 //BATT_VIN/3 -#define PC14 36 //OSC32 -#define PC15 37 //OSC32 +#define PC14 36 //OSC32 +#define PC15 37 //OSC32 -#define PA11 38 //D+ -#define PA12 39 //D- +#define PA11 38 //D+ +#define PA12 39 //D- -#define PA13 40 //SWDIO -#define PA14 41 //SWCLK +#define PA13 40 //SWDIO +#define PA14 41 //SWCLK -#define PC10 42 //FLASH_SCK -#define PC11 43 //FLASH_CIPO -#define PC12 44 //FLASH_COPI -#define PC3 45 //FLASH_CS +#define PC10 42 //FLASH_SCK +#define PC11 43 //FLASH_CIPO +#define PC12 44 //FLASH_COPI +#define PC3 45 //FLASH_CS // This must be a literal #define NUM_DIGITAL_PINS 46 @@ -113,46 +113,46 @@ #endif // Pulse Width Modulation -#define PWM0 PC6 -#define PWM1 PC7 +#define PWM0 PC6 +#define PWM1 PC7 // General Purpose -#define G0 PD2 -#define G1 PA8 -#define G2 PA0 -#define G3 PC8 -#define G4 PC9 -#define G5 PC13 -#define G6 PC2 -#define G10 PB13 -#define G11 PB12 +#define G0 PD2 +#define G1 PA8 +#define G2 PA0 +#define G3 PC8 +#define G4 PC9 +#define G5 PC13 +#define G6 PC2 +#define G10 PB13 +#define G11 PB12 // I2S Interface -#define AUD_OUT PB4 -#define AUD_IN PB5 -#define AUD_LRCLK PA4 -#define AUD_BCLK PB3 +#define AUD_OUT PB4 +#define AUD_IN PB5 +#define AUD_LRCLK PA4 +#define AUD_BCLK PB3 // Analog Pins -#define BATT_VIN PA1 +#define BATT_VIN PA1 // UART1 -#define TX1 PA2 -#define RX1 PA3 +#define TX1 PA2 +#define RX1 PA3 // Can Bus -#define CAN_RX PB8 -#define CAN_TX PB9 +#define CAN_RX PB8 +#define CAN_TX PB9 // SWD -#define SWDIO PA13 -#define SWDCK PA14 +#define SWDIO PA13 +#define SWDCK PA14 // USB Host -#define HOST_DM PB14 -#define HOST_DP PB15 -#define HOST_VBUS PB13 -#define HOST_ID PB12 +#define HOST_DM PB14 +#define HOST_DP PB15 +#define HOST_VBUS PB13 +#define HOST_ID PB12 // SPI Definitions #ifndef PIN_SPI_SS @@ -169,18 +169,18 @@ #endif // SPI FLASH -#define FLASH_SDO PC11 -#define FLASH_SDI PC12 -#define FLASH_SCK PC10 -#define FLASH_CS PC3 +#define FLASH_SDO PC11 +#define FLASH_SDI PC12 +#define FLASH_SCK PC10 +#define FLASH_CS PC3 // I2C -#define PIN_WIRE_SCL PB10 -#define PIN_WIRE_SDA PB11 +#define PIN_WIRE_SCL PB10 +#define PIN_WIRE_SDA PB11 #define INT PB1 -#define SCL1 PB6 -#define SDA1 PB7 +#define SCL1 PB6 +#define SDA1 PB7 // Timer Definitions From 340c11b0dee97d52d8d8bb1b8896e5f6d57cb8d6 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:30:17 -0500 Subject: [PATCH 15/23] Update variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index b1aa397db0..887bb27458 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -243,4 +243,4 @@ #ifndef SERIAL_PORT_HARDWARE #define SERIAL_PORT_HARDWARE Serial1 #endif -#endif \ No newline at end of file +#endif From 7da1da82846ef4d34aefa3e78cc1fd8a2eebb5f1 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:34:16 -0500 Subject: [PATCH 16/23] add empty line back to README --- README.md | 70 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index b6e40dd4fd..df380f496b 100644 --- a/README.md +++ b/README.md @@ -49,37 +49,45 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d ## 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 STM32C0 boards](#generic-stm32c0-boards) - - [Generic STM32F0 boards](#generic-stm32f0-boards) - - [Generic STM32F1 boards](#generic-stm32f1-boards) - - [Generic STM32F2 boards](#generic-stm32f2-boards) - - [Generic STM32F3 boards](#generic-stm32f3-boards) - - [Generic STM32F4 boards](#generic-stm32f4-boards) - - [Generic STM32F7 boards](#generic-stm32f7-boards) - - [Generic STM32G0 boards](#generic-stm32g0-boards) - - [Generic STM32G4 boards](#generic-stm32g4-boards) - - [Generic STM32H7 boards](#generic-stm32h7-boards) - - [Generic STM32L0 boards](#generic-stm32l0-boards) - - [Generic STM32L1 boards](#generic-stm32l1-boards) - - [Generic STM32L4 boards](#generic-stm32l4-boards) - - [Generic STM32L5 boards](#generic-stm32l5-boards) - - [Generic STM32U5 boards](#generic-stm32u5-boards) - - [Generic STM32WB boards](#generic-stm32wb-boards) - - [Generic STM32WL boards](#generic-stm32wb-boards) - - [3D printer boards](#3d-printer-boards) - - [Blues Wireless boards](#blues-wireless-boards) - - [Elecgator boards](#elecgator-boards) - - [Electronic Speed Controller boards](#electronic-speed-controller-boards) - - [Garatronics boards](#Garatronic/McHobby-boards) - - [Generic flight controllers](#generic-flight-controllers) - - [LoRa boards](#lora-boards) - - [Midatronics boards](#midatronics-boards) +- [Arduino core support for STM32 based boards](#arduino-core-support-for-stm32-based-boards) + - [Introduction](#introduction) + - [Getting Started](#getting-started) + - [Supported boards](#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 STM32C0 boards](#generic-stm32c0-boards) + - [Generic STM32F0 boards](#generic-stm32f0-boards) + - [Generic STM32F1 boards](#generic-stm32f1-boards) + - [Generic STM32F2 boards](#generic-stm32f2-boards) + - [Generic STM32F3 boards](#generic-stm32f3-boards) + - [Generic STM32F4 boards](#generic-stm32f4-boards) + - [Generic STM32F7 boards](#generic-stm32f7-boards) + - [Generic STM32G0 boards](#generic-stm32g0-boards) + - [Generic STM32G4 boards](#generic-stm32g4-boards) + - [Generic STM32H7 boards](#generic-stm32h7-boards) + - [Generic STM32L0 boards](#generic-stm32l0-boards) + - [Generic STM32L1 boards](#generic-stm32l1-boards) + - [Generic STM32L4 boards](#generic-stm32l4-boards) + - [Generic STM32L5 boards](#generic-stm32l5-boards) + - [Generic STM32U5 boards](#generic-stm32u5-boards) + - [Generic STM32WB boards](#generic-stm32wb-boards) + - [Generic STM32WL boards](#generic-stm32wl-boards) + - [3D printer boards](#3d-printer-boards) + - [Blues Wireless boards](#blues-wireless-boards) + - [Elecgator boards](#elecgator-boards) + - [Electronic Speed Controller boards](#electronic-speed-controller-boards) + - [Garatronic/McHobby boards](#garatronicmchobby-boards) + - [Generic flight controllers](#generic-flight-controllers) + - [LoRa boards](#lora-boards) + - [Midatronics boards](#midatronics-boards) + - [Next release](#next-release) + - [Troubleshooting](#troubleshooting) + + ### [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 From ca0877e8ce3f228b3538f0371adb027335ab0636 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:36:24 -0500 Subject: [PATCH 17/23] add empty line back to README --- README.md | 70 ++++++++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index df380f496b..ffda5ac110 100644 --- a/README.md +++ b/README.md @@ -49,48 +49,40 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d ## Supported boards -- [Arduino core support for STM32 based boards](#arduino-core-support-for-stm32-based-boards) - - [Introduction](#introduction) - - [Getting Started](#getting-started) - - [Supported boards](#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 STM32C0 boards](#generic-stm32c0-boards) - - [Generic STM32F0 boards](#generic-stm32f0-boards) - - [Generic STM32F1 boards](#generic-stm32f1-boards) - - [Generic STM32F2 boards](#generic-stm32f2-boards) - - [Generic STM32F3 boards](#generic-stm32f3-boards) - - [Generic STM32F4 boards](#generic-stm32f4-boards) - - [Generic STM32F7 boards](#generic-stm32f7-boards) - - [Generic STM32G0 boards](#generic-stm32g0-boards) - - [Generic STM32G4 boards](#generic-stm32g4-boards) - - [Generic STM32H7 boards](#generic-stm32h7-boards) - - [Generic STM32L0 boards](#generic-stm32l0-boards) - - [Generic STM32L1 boards](#generic-stm32l1-boards) - - [Generic STM32L4 boards](#generic-stm32l4-boards) - - [Generic STM32L5 boards](#generic-stm32l5-boards) - - [Generic STM32U5 boards](#generic-stm32u5-boards) - - [Generic STM32WB boards](#generic-stm32wb-boards) - - [Generic STM32WL boards](#generic-stm32wl-boards) - - [3D printer boards](#3d-printer-boards) - - [Blues Wireless boards](#blues-wireless-boards) - - [Elecgator boards](#elecgator-boards) - - [Electronic Speed Controller boards](#electronic-speed-controller-boards) - - [Garatronic/McHobby boards](#garatronicmchobby-boards) - - [Generic flight controllers](#generic-flight-controllers) - - [LoRa boards](#lora-boards) - - [Midatronics boards](#midatronics-boards) - - [Next release](#next-release) - - [Troubleshooting](#troubleshooting) - + - [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 STM32C0 boards](#generic-stm32c0-boards) + - [Generic STM32F0 boards](#generic-stm32f0-boards) + - [Generic STM32F1 boards](#generic-stm32f1-boards) + - [Generic STM32F2 boards](#generic-stm32f2-boards) + - [Generic STM32F3 boards](#generic-stm32f3-boards) + - [Generic STM32F4 boards](#generic-stm32f4-boards) + - [Generic STM32F7 boards](#generic-stm32f7-boards) + - [Generic STM32G0 boards](#generic-stm32g0-boards) + - [Generic STM32G4 boards](#generic-stm32g4-boards) + - [Generic STM32H7 boards](#generic-stm32h7-boards) + - [Generic STM32L0 boards](#generic-stm32l0-boards) + - [Generic STM32L1 boards](#generic-stm32l1-boards) + - [Generic STM32L4 boards](#generic-stm32l4-boards) + - [Generic STM32L5 boards](#generic-stm32l5-boards) + - [Generic STM32U5 boards](#generic-stm32u5-boards) + - [Generic STM32WB boards](#generic-stm32wb-boards) + - [Generic STM32WL boards](#generic-stm32wb-boards) + - [3D printer boards](#3d-printer-boards) + - [Blues Wireless boards](#blues-wireless-boards) + - [Elecgator boards](#elecgator-boards) + - [Electronic Speed Controller boards](#electronic-speed-controller-boards) + - [Garatronics boards](#Garatronic/McHobby-boards) + - [Generic flight controllers](#generic-flight-controllers) + - [LoRa boards](#lora-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* | | From adad150e039ad84a9620bd7f3a92dbe17a62dac8 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 09:46:05 -0500 Subject: [PATCH 18/23] update PerhiperalPins based on updated generic base --- .../PeripheralPins_MICROMOD_F405.c | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c index 4ec8dd9583..de5f73c9d3 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c +++ b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c @@ -1,6 +1,6 @@ /* ******************************************************************************* - * Copyright (c) 2019, STMicroelectronics + * Copyright (c) 2020, STMicroelectronics * All rights reserved. * * This software component is licensed by ST under BSD 3-Clause license, @@ -10,13 +10,22 @@ * ******************************************************************************* */ -#if defined(ARDUINO_MICROMOD_F405) +/* + * Automatically generated from STM32F405RGTx.xml, STM32F415RGTx.xml + * CubeMX DB release 6.0.80 + */ +#if !defined(ARDUINO_MICROMOD_F405) #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 + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do * ===== */ @@ -100,10 +109,10 @@ WEAK const PinMap PinMap_I2C_SCL[] = { }; #endif -//*** PWM *** +//*** TIM *** #ifdef HAL_TIM_MODULE_ENABLED -WEAK const PinMap PinMap_PWM[] = { +WEAK const PinMap PinMap_TIM[] = { // {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 @@ -163,7 +172,7 @@ WEAK const PinMap PinMap_PWM[] = { }; #endif -//*** SERIAL *** +//*** UART *** #ifdef HAL_UART_MODULE_ENABLED WEAK const PinMap PinMap_UART_TX[] = { @@ -265,7 +274,7 @@ WEAK const PinMap PinMap_SPI_SSEL[] = { //*** CAN *** -#ifdef HAL_CAN_MODULE_ENABLED +#if defined(HAL_CAN_MODULE_ENABLED) || defined(HAL_CAN_LEGACY_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)}, @@ -291,7 +300,7 @@ WEAK const PinMap PinMap_CAN_TD[] = { //*** USB *** -#ifdef HAL_PCD_MODULE_ENABLED +#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_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 From 4a3c94f3086e6259286f39a0ecb4faffd63eed9c Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 12:13:49 -0500 Subject: [PATCH 19/23] final README formatting fix --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ffda5ac110..d75f055d95 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d ### [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* | | From 0a97cabe5622e9caa5931b2b2f3c35a47a7db5be Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Thu, 30 Mar 2023 14:45:28 -0500 Subject: [PATCH 20/23] fix inadvertant ! in #if on PeripheralPins --- .../STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c index de5f73c9d3..1af9e033ef 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c +++ b/variants/STM32F4xx/F405RGT_F415RGT/PeripheralPins_MICROMOD_F405.c @@ -14,7 +14,7 @@ * Automatically generated from STM32F405RGTx.xml, STM32F415RGTx.xml * CubeMX DB release 6.0.80 */ -#if !defined(ARDUINO_MICROMOD_F405) +#if defined(ARDUINO_MICROMOD_F405) #include "Arduino.h" #include "PeripheralPins.h" From 9af771fcbb6dfc079fb559e96cca000447baa731 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Fri, 31 Mar 2023 08:53:13 -0500 Subject: [PATCH 21/23] Update variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h index 887bb27458..c04d028d95 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h +++ b/variants/STM32F4xx/F405RGT_F415RGT/variant_MICROMOD_F405.h @@ -29,8 +29,6 @@ */ #pragma once -#define USBD_VID 0x1B4F -#define USBD_PID 0x0029 /*---------------------------------------------------------------------------- * Pins From d72d0f11fd849984f7d44d94a2523233e550c690 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Fri, 31 Mar 2023 08:53:56 -0500 Subject: [PATCH 22/23] Update boards.txt Co-authored-by: Frederic Pillon Signed-off-by: Brandon Satrom --- boards.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boards.txt b/boards.txt index 089e265b7a..8377e17e5d 100644 --- a/boards.txt +++ b/boards.txt @@ -3707,6 +3707,8 @@ GenF4.menu.pnum.MICROMOD_F405.build.product_line=STM32F405xx GenF4.menu.pnum.MICROMOD_F405.build.variant_h=variant_{build.board}.h GenF4.menu.pnum.MICROMOD_F405.build.variant=STM32F4xx/F405RGT_F415RGT GenF4.menu.pnum.MICROMOD_F405.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS +GenF4.menu.pnum.MICROMOD_F405.build.vid=0x1B4F +GenF4.menu.pnum.MICROMOD_F405.build.pid=0x0029 # ThunderPack F411xxE # https://github.com/jgillick/ThunderPack/tree/STM32F4 From 761c4d130c2f2244fe84f2f2991028efd8a1f072 Mon Sep 17 00:00:00 2001 From: Brandon Satrom Date: Fri, 31 Mar 2023 08:57:35 -0500 Subject: [PATCH 23/23] update cmake files via cmake_updater_hook.py --- cmake/boards_db.cmake | 50 +++++++++++++++++-- .../STM32F4xx/F405RGT_F415RGT/CMakeLists.txt | 2 +- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/cmake/boards_db.cmake b/cmake/boards_db.cmake index 57423c4ac9..b8bab7f719 100644 --- a/cmake/boards_db.cmake +++ b/cmake/boards_db.cmake @@ -97894,15 +97894,15 @@ target_compile_options(MICROMOD_F405_serial_none INTERFACE ) add_library(MICROMOD_F405_usb_CDC INTERFACE) target_compile_options(MICROMOD_F405_usb_CDC INTERFACE - "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB" + "SHELL:-DUSBCON -DUSBD_VID=0x1B4F -DUSBD_PID=0x0029 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB" ) add_library(MICROMOD_F405_usb_CDCgen INTERFACE) target_compile_options(MICROMOD_F405_usb_CDCgen INTERFACE - "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC" + "SHELL:-DUSBCON -DUSBD_VID=0x1B4F -DUSBD_PID=0x0029 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC" ) add_library(MICROMOD_F405_usb_HID INTERFACE) target_compile_options(MICROMOD_F405_usb_HID INTERFACE - "SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=0 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE" + "SHELL:-DUSBCON -DUSBD_VID=0x1B4F -DUSBD_PID=0x0029 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE" ) add_library(MICROMOD_F405_usb_none INTERFACE) target_compile_options(MICROMOD_F405_usb_none INTERFACE @@ -97921,6 +97921,50 @@ target_compile_options(MICROMOD_F405_xusb_HSFS INTERFACE "SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS" ) +# MICROMOD_F405_hid +# ----------------------------------------------------------------------------- + +set(MICROMOD_F405_hid_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32F4xx/F405RGT_F415RGT") +set(MICROMOD_F405_hid_MAXSIZE 1048576) +set(MICROMOD_F405_hid_MAXDATASIZE 131072) +set(MICROMOD_F405_hid_MCU cortex-m4) +set(MICROMOD_F405_hid_FPCONF "-") +add_library(MICROMOD_F405_hid INTERFACE) +target_compile_options(MICROMOD_F405_hid INTERFACE + "SHELL:-DSTM32F405xx -DHAL_UART_MODULE_ENABLED -DBL_HID -DVECT_TAB_OFFSET=0x4000" + "SHELL:-DCUSTOM_PERIPHERAL_PINS" + "SHELL:" + "SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard" + -mcpu=${MICROMOD_F405_hid_MCU} +) +target_compile_definitions(MICROMOD_F405_hid INTERFACE + "STM32F4xx" + "ARDUINO_MICROMOD_F405" + "BOARD_NAME=\"MICROMOD_F405\"" + "BOARD_ID=MICROMOD_F405" + "VARIANT_H=\"variant_MICROMOD_F405.h\"" +) +target_include_directories(MICROMOD_F405_hid INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/../system/STM32F4xx + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Inc + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Src + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/ + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/ + ${MICROMOD_F405_hid_VARIANT_PATH} +) + +target_link_options(MICROMOD_F405_hid INTERFACE + "LINKER:--default-script=${MICROMOD_F405_hid_VARIANT_PATH}/ldscript.ld" + "LINKER:--defsym=LD_FLASH_OFFSET=0x4000" + "LINKER:--defsym=LD_MAX_SIZE=1048576" + "LINKER:--defsym=LD_MAX_DATA_SIZE=131072" + "SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard" + -mcpu=${MICROMOD_F405_hid_MCU} +) +target_link_libraries(MICROMOD_F405_hid INTERFACE + arm_cortexM4lf_math +) + # MKR_SHARKY # ----------------------------------------------------------------------------- diff --git a/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt b/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt index 6a6bc4a0f1..be3f9a25ba 100644 --- a/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt +++ b/variants/STM32F4xx/F405RGT_F415RGT/CMakeLists.txt @@ -24,8 +24,8 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL PeripheralPins_FEATHER_F405.c PeripheralPins_MICROMOD_F405.c variant_FEATHER_F405.cpp - variant_MICROMOD_F405.cpp variant_generic.cpp + variant_MICROMOD_F405.cpp ) target_link_libraries(variant_bin PUBLIC variant_usage)