]> code.bitgloo.com Git - clyne/stmdsp.git/commitdiff
support H7 and L4; use second ADC for input
authorClyne Sullivan <clyne@bitgloo.com>
Thu, 11 Mar 2021 00:42:18 +0000 (19:42 -0500)
committerClyne Sullivan <clyne@bitgloo.com>
Thu, 11 Mar 2021 00:42:18 +0000 (19:42 -0500)
23 files changed:
Makefile
STM32L476xG.ld [new file with mode: 0644]
board/board.c [deleted file]
board/board.h [deleted file]
board/board.mk
board/board_h7.c [new file with mode: 0644]
board/board_l4.c [new file with mode: 0644]
board/h7/board.h [new file with mode: 0644]
board/l4/board.h [new file with mode: 0644]
cfg/mcuconf.h
cfg/mcuconf_h7.h [new file with mode: 0644]
cfg/mcuconf_l4.h [new file with mode: 0644]
gui/stmdsp.cpp
gui/stmdsp.hpp
gui/wxmain.cpp
source/adc.cpp
source/adc.hpp
source/cordic.cpp
source/cordic.hpp
source/main.cpp
source/samplebuffer.hpp
source/sclock.cpp
source/usbcfg.c

index c680ac8164f8a46ca9b74f161632173d44bfe0fe..24bda87f43eba117f408d0c07139608dfb86bf86 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,9 @@
 # NOTE: Can be overridden externally.
 #
 
+# Set the target platform, either L4, G4, or H7
+TARGET_PLATFORM = L4
+
 # Compiler options here.
 ifeq ($(USE_OPT),)
   USE_OPT = -O0 -ggdb -fomit-frame-pointer -falign-functions=16 --specs=nosys.specs
@@ -55,13 +58,13 @@ endif
 # Stack size to be allocated to the Cortex-M process stack. This stack is
 # the stack used by the main() thread.
 ifeq ($(USE_PROCESS_STACKSIZE),)
-  USE_PROCESS_STACKSIZE = 0x1000
+  USE_PROCESS_STACKSIZE = 1024
 endif
 
 # Stack size to the allocated to the Cortex-M main/exceptions stack. This
 # stack is used for processing interrupts and exceptions.
 ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
-  USE_EXCEPTIONS_STACKSIZE = 0x1000
+  USE_EXCEPTIONS_STACKSIZE = 2048
 endif
 
 # Enables the use of FPU (no, softfp, hard).
@@ -71,8 +74,13 @@ endif
 
 # FPU-related options.
 ifeq ($(USE_FPU_OPT),)
+ifeq ($(TARGET_PLATFORM),H7)
   USE_FPU_OPT = -mfloat-abi=$(USE_FPU) -mfpu=fpv5-d16
 endif
+ifeq ($(TARGET_PLATFORM),L4)
+  USE_FPU_OPT = -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16
+endif
+endif
 
 #
 # Architecture or project specific options
@@ -86,7 +94,11 @@ endif
 PROJECT = ch
 
 # Target settings.
-MCU  = cortex-m7
+ifeq ($(TARGET_PLATFORM),H7)
+  MCU = cortex-m7
+else
+  MCU = cortex-m4
+endif
 
 # Imported source files and paths.
 CHIBIOS  := ./ChibiOS_20.3.2
@@ -97,10 +109,18 @@ DEPDIR   := ./.dep
 # Licensing files.
 include $(CHIBIOS)/os/license/license.mk
 # Startup files.
-include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32h7xx.mk
+ifeq ($(TARGET_PLATFORM),H7)
+  include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32h7xx.mk
+else
+  include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk
+endif
 # HAL-OSAL files (optional).
 include $(CHIBIOS)/os/hal/hal.mk
-include $(CHIBIOS)/os/hal/ports/STM32/STM32H7xx/platform.mk
+ifeq ($(TARGET_PLATFORM),H7)
+  include $(CHIBIOS)/os/hal/ports/STM32/STM32H7xx/platform.mk
+else
+  include $(CHIBIOS)/os/hal/ports/STM32/STM32L4xx/platform.mk
+endif
 include ./board/board.mk
 include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk
 # RTOS files (optional).
@@ -114,7 +134,11 @@ include $(CHIBIOS)/tools/mk/autobuild.mk
 #include $(CHIBIOS)/test/oslib/oslib_test.mk
 
 # Define linker script file here
-LDSCRIPT= STM32H723xG.ld
+ifeq ($(TARGET_PLATFORM),H7)
+  LDSCRIPT = STM32H723xG.ld
+else
+  LDSCRIPT = STM32L476xG.ld
+endif
 
 # C sources that can be compiled in ARM or THUMB mode depending on the global
 # setting.
@@ -150,7 +174,8 @@ CPPWARN = -Wall -Wextra -Wundef -pedantic -Wno-volatile
 # List all user C define here, like -D_DEBUG=1
 UDEFS = -DCORTEX_ENABLE_WFI_IDLE=TRUE \
                -DPORT_USE_SYSCALL=TRUE \
-               -DPORT_USE_GUARD_MPU_REGION=MPU_REGION_0
+               -DPORT_USE_GUARD_MPU_REGION=MPU_REGION_0 \
+               -DTARGET_PLATFORM_$(TARGET_PLATFORM)
 
 # Define ASM defines here
 UADEFS =
diff --git a/STM32L476xG.ld b/STM32L476xG.ld
new file mode 100644 (file)
index 0000000..b3a332d
--- /dev/null
@@ -0,0 +1,116 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * STM32L476xG memory setup.\r
+ * A total of 1MB of flash is available.\r
+ * Firmware uses first 510K, then 2K after is used for unprivileged code.\r
+ * A total of 128K of RAM is available.\r
+ * SRAM2 (32K) is used for ELF binary loading.\r
+ * 32K of SRAM1 is used for system RAM.\r
+ * 48K is used for ADC and DAC buffers.\r
+ * 16K is used for unprivileged data (incl. 8K  stack).\r
+ */\r
+MEMORY\r
+{\r
+    flash0 (rx) : org = 0x08000000, len = 510K   /* Flash bank 1 (reduced from 1M to 510K) */\r
+    flash1 (rx) : org = 0x00000000, len = 0\r
+    flash2 (rx) : org = 0x00000000, len = 0\r
+    flash3 (rx) : org = 0x00000000, len = 0\r
+    flash4 (rx) : org = 0x00000000, len = 0\r
+    flash5 (rx) : org = 0x00000000, len = 0\r
+    flash6 (rx) : org = 0x00000000, len = 0\r
+    flash7 (rx) : org = 0x00000000, len = 0\r
+    ram0   (wx) : org = 0x20000000, len = 32K  /* SRAM (actual total = 96K) */\r
+    ram1   (wx) : org = 0x20008000, len = 48K  /* ADC/DAC buffers (16K * 3) */\r
+    ram2   (wx) : org = 0x00000000, len = 0\r
+    ram3   (wx) : org = 0x00000000, len = 0\r
+    ram4   (wx) : org = 0x10000000, len = 32K  /* User algorithm */\r
+    ram5   (wx) : org = 0x00000000, len = 0\r
+    ram6   (wx) : org = 0x00000000, len = 0\r
+    ram7   (wx) : org = 0x00000000, len = 0\r
+    flashc (rx) : org = 0x0807F800, len = 2K   /* Unprivileged firmware */\r
+    ramc   (wx) : org = 0x20014000, len = 16K  /* Unprivileged data */\r
+}\r
+\r
+/* For each data/text section two region are defined, a virtual region\r
+   and a load region (_LMA suffix).*/\r
+\r
+/* Flash region to be used for exception vectors.*/\r
+REGION_ALIAS("VECTORS_FLASH", flash0);\r
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);\r
+\r
+/* Flash region to be used for constructors and destructors.*/\r
+REGION_ALIAS("XTORS_FLASH", flash0);\r
+REGION_ALIAS("XTORS_FLASH_LMA", flash0);\r
+\r
+/* Flash region to be used for code text.*/\r
+REGION_ALIAS("TEXT_FLASH", flash0);\r
+REGION_ALIAS("TEXT_FLASH_LMA", flash0);\r
+\r
+/* Flash region to be used for read only data.*/\r
+REGION_ALIAS("RODATA_FLASH", flash0);\r
+REGION_ALIAS("RODATA_FLASH_LMA", flash0);\r
+\r
+/* Flash region to be used for various.*/\r
+REGION_ALIAS("VARIOUS_FLASH", flash0);\r
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);\r
+\r
+/* Flash region to be used for RAM(n) initialization data.*/\r
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);\r
+\r
+/* RAM region to be used for Main stack. This stack accommodates the processing\r
+   of all exceptions and interrupts.*/\r
+REGION_ALIAS("MAIN_STACK_RAM", ram0);\r
+\r
+/* RAM region to be used for the process stack. This is the stack used by\r
+   the main() function.*/\r
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);\r
+\r
+/* RAM region to be used for data segment.*/\r
+REGION_ALIAS("DATA_RAM", ram0);\r
+REGION_ALIAS("DATA_RAM_LMA", flash0);\r
+\r
+/* RAM region to be used for BSS segment.*/\r
+REGION_ALIAS("BSS_RAM", ram0);\r
+\r
+/* RAM region to be used for the default heap.*/\r
+REGION_ALIAS("HEAP_RAM", ram0);\r
+\r
+SECTIONS\r
+{\r
+    .convdata : ALIGN(4)\r
+    {\r
+        *(.convdata)\r
+        . = ALIGN(4);\r
+    } > ramc\r
+\r
+    /*.stacks : ALIGN(4)\r
+    {\r
+        *(.stacks)\r
+        . = ALIGN(4);\r
+    } > ram5*/\r
+\r
+    .convcode : ALIGN(4)\r
+    {\r
+        *(.convcode)\r
+        . = ALIGN(4);\r
+    } > flashc\r
+}\r
+\r
+\r
+/* Generic rules inclusion.*/\r
+INCLUDE rules.ld\r
diff --git a/board/board.c b/board/board.c
deleted file mode 100644 (file)
index 2868726..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*\r
-    ChibiOS - Copyright (C) 2006..2019 Giovanni Di Sirio\r
-\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-*/\r
-\r
-/*\r
- * This file has been automatically generated using ChibiStudio board\r
- * generator plugin. Do not edit manually.\r
- */\r
-\r
-#include "hal.h"\r
-#include "stm32_gpio.h"\r
-\r
-/*===========================================================================*/\r
-/* Driver local definitions.                                                 */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Driver exported variables.                                                */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Driver local variables and types.                                         */\r
-/*===========================================================================*/\r
-\r
-/**\r
- * @brief   Type of STM32 GPIO port setup.\r
- */\r
-typedef struct {\r
-  uint32_t              moder;\r
-  uint32_t              otyper;\r
-  uint32_t              ospeedr;\r
-  uint32_t              pupdr;\r
-  uint32_t              odr;\r
-  uint32_t              afrl;\r
-  uint32_t              afrh;\r
-} gpio_setup_t;\r
-\r
-/**\r
- * @brief   Type of STM32 GPIO initialization data.\r
- */\r
-typedef struct {\r
-#if STM32_HAS_GPIOA || defined(__DOXYGEN__)\r
-  gpio_setup_t          PAData;\r
-#endif\r
-#if STM32_HAS_GPIOB || defined(__DOXYGEN__)\r
-  gpio_setup_t          PBData;\r
-#endif\r
-#if STM32_HAS_GPIOC || defined(__DOXYGEN__)\r
-  gpio_setup_t          PCData;\r
-#endif\r
-#if STM32_HAS_GPIOD || defined(__DOXYGEN__)\r
-  gpio_setup_t          PDData;\r
-#endif\r
-#if STM32_HAS_GPIOE || defined(__DOXYGEN__)\r
-  gpio_setup_t          PEData;\r
-#endif\r
-#if STM32_HAS_GPIOF || defined(__DOXYGEN__)\r
-  gpio_setup_t          PFData;\r
-#endif\r
-#if STM32_HAS_GPIOG || defined(__DOXYGEN__)\r
-  gpio_setup_t          PGData;\r
-#endif\r
-#if STM32_HAS_GPIOH || defined(__DOXYGEN__)\r
-  gpio_setup_t          PHData;\r
-#endif\r
-#if STM32_HAS_GPIOI || defined(__DOXYGEN__)\r
-  gpio_setup_t          PIData;\r
-#endif\r
-#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)\r
-  gpio_setup_t          PJData;\r
-#endif\r
-#if STM32_HAS_GPIOK || defined(__DOXYGEN__)\r
-  gpio_setup_t          PKData;\r
-#endif\r
-} gpio_config_t;\r
-\r
-/**\r
- * @brief   STM32 GPIO static initialization data.\r
- */\r
-static const gpio_config_t gpio_default_config = {\r
-#if STM32_HAS_GPIOA\r
-  {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,\r
-   VAL_GPIOA_ODR,   VAL_GPIOA_AFRL,   VAL_GPIOA_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOB\r
-  {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,\r
-   VAL_GPIOB_ODR,   VAL_GPIOB_AFRL,   VAL_GPIOB_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOC\r
-  {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,\r
-   VAL_GPIOC_ODR,   VAL_GPIOC_AFRL,   VAL_GPIOC_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOD\r
-  {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,\r
-   VAL_GPIOD_ODR,   VAL_GPIOD_AFRL,   VAL_GPIOD_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOE\r
-  {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,\r
-   VAL_GPIOE_ODR,   VAL_GPIOE_AFRL,   VAL_GPIOE_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOF\r
-  {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,\r
-   VAL_GPIOF_ODR,   VAL_GPIOF_AFRL,   VAL_GPIOF_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOG\r
-  {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,\r
-   VAL_GPIOG_ODR,   VAL_GPIOG_AFRL,   VAL_GPIOG_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOH\r
-  {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,\r
-   VAL_GPIOH_ODR,   VAL_GPIOH_AFRL,   VAL_GPIOH_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOI\r
-  {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,\r
-   VAL_GPIOI_ODR,   VAL_GPIOI_AFRL,   VAL_GPIOI_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOJ\r
-  {VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,\r
-   VAL_GPIOJ_ODR,   VAL_GPIOJ_AFRL,   VAL_GPIOJ_AFRH},\r
-#endif\r
-#if STM32_HAS_GPIOK\r
-  {VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,\r
-   VAL_GPIOK_ODR,   VAL_GPIOK_AFRL,   VAL_GPIOK_AFRH}\r
-#endif\r
-};\r
-\r
-/*===========================================================================*/\r
-/* Driver local functions.                                                   */\r
-/*===========================================================================*/\r
-\r
-static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {\r
-\r
-  gpiop->OTYPER  = config->otyper;\r
-  gpiop->OSPEEDR = config->ospeedr;\r
-  gpiop->PUPDR   = config->pupdr;\r
-  gpiop->ODR     = config->odr;\r
-  gpiop->AFRL    = config->afrl;\r
-  gpiop->AFRH    = config->afrh;\r
-  gpiop->MODER   = config->moder;\r
-}\r
-\r
-static void stm32_gpio_init(void) {\r
-\r
-  /* Enabling GPIO-related clocks, the mask comes from the\r
-     registry header file.*/\r
-  rccResetAHB4(STM32_GPIO_EN_MASK);\r
-  rccEnableAHB4(STM32_GPIO_EN_MASK, true);\r
-\r
-  /* Initializing all the defined GPIO ports.*/\r
-#if STM32_HAS_GPIOA\r
-  gpio_init(GPIOA, &gpio_default_config.PAData);\r
-#endif\r
-#if STM32_HAS_GPIOB\r
-  gpio_init(GPIOB, &gpio_default_config.PBData);\r
-#endif\r
-#if STM32_HAS_GPIOC\r
-  gpio_init(GPIOC, &gpio_default_config.PCData);\r
-#endif\r
-#if STM32_HAS_GPIOD\r
-  gpio_init(GPIOD, &gpio_default_config.PDData);\r
-#endif\r
-#if STM32_HAS_GPIOE\r
-  gpio_init(GPIOE, &gpio_default_config.PEData);\r
-#endif\r
-#if STM32_HAS_GPIOF\r
-  gpio_init(GPIOF, &gpio_default_config.PFData);\r
-#endif\r
-#if STM32_HAS_GPIOG\r
-  gpio_init(GPIOG, &gpio_default_config.PGData);\r
-#endif\r
-#if STM32_HAS_GPIOH\r
-  gpio_init(GPIOH, &gpio_default_config.PHData);\r
-#endif\r
-#if STM32_HAS_GPIOI\r
-  gpio_init(GPIOI, &gpio_default_config.PIData);\r
-#endif\r
-#if STM32_HAS_GPIOJ\r
-  gpio_init(GPIOJ, &gpio_default_config.PJData);\r
-#endif\r
-#if STM32_HAS_GPIOK\r
-  gpio_init(GPIOK, &gpio_default_config.PKData);\r
-#endif\r
-}\r
-\r
-/*===========================================================================*/\r
-/* Driver interrupt handlers.                                                */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Driver exported functions.                                                */\r
-/*===========================================================================*/\r
-\r
-/**\r
- * @brief   Early initialization code.\r
- * @details GPIO ports and system clocks are initialized before everything\r
- *          else.\r
- */\r
-void __early_init(void) {\r
-\r
-  stm32_gpio_init();\r
-  stm32_clock_init();\r
-}\r
-\r
-#if HAL_USE_SDC || defined(__DOXYGEN__)\r
-/**\r
- * @brief   SDC card detection.\r
- */\r
-bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {\r
-\r
-  (void)sdcp;\r
-  /* CHTODO: Fill the implementation.*/\r
-  return true;\r
-}\r
-\r
-/**\r
- * @brief   SDC card write protection detection.\r
- */\r
-bool sdc_lld_is_write_protected(SDCDriver *sdcp) {\r
-\r
-  (void)sdcp;\r
-  /* CHTODO: Fill the implementation.*/\r
-  return false;\r
-}\r
-#endif /* HAL_USE_SDC */\r
-\r
-#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)\r
-/**\r
- * @brief   MMC_SPI card detection.\r
- */\r
-bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {\r
-\r
-  (void)mmcp;\r
-  /* CHTODO: Fill the implementation.*/\r
-  return true;\r
-}\r
-\r
-/**\r
- * @brief   MMC_SPI card write protection detection.\r
- */\r
-bool mmc_lld_is_write_protected(MMCDriver *mmcp) {\r
-\r
-  (void)mmcp;\r
-  /* CHTODO: Fill the implementation.*/\r
-  return false;\r
-}\r
-#endif\r
-\r
-/**\r
- * @brief   Board-specific initialization code.\r
- * @note    You can add your board-specific code here.\r
- */\r
-void boardInit(void) {\r
-\r
-}\r
diff --git a/board/board.h b/board/board.h
deleted file mode 100644 (file)
index 58ba40e..0000000
+++ /dev/null
@@ -1,1642 +0,0 @@
-/*\r
-    ChibiOS - Copyright (C) 2006..2019 Giovanni Di Sirio\r
-\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-*/\r
-\r
-/*\r
- * This file has been automatically generated using ChibiStudio board\r
- * generator plugin. Do not edit manually.\r
- */\r
-\r
-#ifndef BOARD_H\r
-#define BOARD_H\r
-\r
-/*===========================================================================*/\r
-/* Driver constants.                                                         */\r
-/*===========================================================================*/\r
-\r
-/*\r
- * Setup for STMicroelectronics STM32 Nucleo144-H743ZI board.\r
- */\r
-\r
-/*\r
- * Board identifier.\r
- */\r
-#define BOARD_ST_NUCLEO144_H743ZI\r
-#define BOARD_NAME                  "STMicroelectronics STM32 Nucleo144-H743ZI"\r
-\r
-/*\r
- * Ethernet PHY type.\r
- */\r
-#define BOARD_PHY_ID                MII_LAN8742A_ID\r
-#define BOARD_PHY_RMII\r
-\r
-/*\r
- * Board oscillators-related settings.\r
- */\r
-#if !defined(STM32_LSECLK)\r
-#define STM32_LSECLK                32768U\r
-#endif\r
-\r
-#define STM32_LSEDRV                (3U << 3U)\r
-\r
-#if !defined(STM32_HSECLK)\r
-#define STM32_HSECLK                8000000U\r
-#endif\r
-\r
-#define STM32_HSE_BYPASS\r
-\r
-/*\r
- * MCU type as defined in the ST header.\r
- */\r
-#define STM32H723xx\r
-\r
-/*\r
- * IO pins assignments.\r
- */\r
-#define GPIOA_PIN0                  0U\r
-#define GPIOA_RMII_REF_CLK          1U\r
-#define GPIOA_RMII_MDIO             2U\r
-#define GPIOA_PIN3                  3U\r
-#define GPIOA_PIN4                  4U\r
-#define GPIOA_PIN5                  5U\r
-#define GPIOA_PIN6                  6U\r
-#define GPIOA_RMII_CRS_DV           7U\r
-#define GPIOA_USB_SOF               8U\r
-#define GPIOA_MCO1                  8U\r
-#define GPIOA_USB_VBUS              9U\r
-#define GPIOA_USB_ID                10U\r
-#define GPIOA_USB_DM                11U\r
-#define GPIOA_USB_DP                12U\r
-#define GPIOA_SWDIO                 13U\r
-#define GPIOA_SWCLK                 14U\r
-#define GPIOA_T_JTDI                15U\r
-\r
-#define GPIOB_LED1                  0U\r
-#define GPIOB_LED_GREEN             0U\r
-#define GPIOB_LED                   0U\r
-#define GPIOB_PIN1                  1U\r
-#define GPIOB_PIN2                  2U\r
-#define GPIOB_SWO                   3U\r
-#define GPIOB_PIN4                  4U\r
-#define GPIOB_PIN5                  5U\r
-#define GPIOB_PIN6                  6U\r
-#define GPIOB_PIN7                  7U\r
-#define GPIOB_PIN8                  8U\r
-#define GPIOB_PIN9                  9U\r
-#define GPIOB_PIN10                 10U\r
-#define GPIOB_PIN11                 11U\r
-#define GPIOB_PIN12                 12U\r
-#define GPIOB_RMII_TXD1             13U\r
-#define GPIOB_LED3                  14U\r
-#define GPIOB_LED_RED               14U\r
-#define GPIOB_PIN15                 15U\r
-\r
-#define GPIOC_PIN0                  0U\r
-#define GPIOC_RMII_MDC              1U\r
-#define GPIOC_PIN2                  2U\r
-#define GPIOC_PIN3                  3U\r
-#define GPIOC_RMII_RXD0             4U\r
-#define GPIOC_RMII_RXD1             5U\r
-#define GPIOC_PIN6                  6U\r
-#define GPIOC_PIN7                  7U\r
-#define GPIOC_PIN8                  8U\r
-#define GPIOC_PIN9                  9U\r
-#define GPIOC_PIN10                 10U\r
-#define GPIOC_PIN11                 11U\r
-#define GPIOC_PIN12                 12U\r
-#define GPIOC_BUTTON                13U\r
-#define GPIOC_OSC32_IN              14U\r
-#define GPIOC_OSC32_OUT             15U\r
-\r
-#define GPIOD_PIN0                  0U\r
-#define GPIOD_PIN1                  1U\r
-#define GPIOD_PIN2                  2U\r
-#define GPIOD_PIN3                  3U\r
-#define GPIOD_PIN4                  4U\r
-#define GPIOD_PIN5                  5U\r
-#define GPIOD_PIN6                  6U\r
-#define GPIOD_PIN7                  7U\r
-#define GPIOD_USART3_RX             8U\r
-#define GPIOD_STLK_RX               8U\r
-#define GPIOD_USART3_TX             9U\r
-#define GPIOD_STLK_TX               9U\r
-#define GPIOD_PIN10                 10U\r
-#define GPIOD_PIN11                 11U\r
-#define GPIOD_PIN12                 12U\r
-#define GPIOD_PIN13                 13U\r
-#define GPIOD_PIN14                 14U\r
-#define GPIOD_PIN15                 15U\r
-\r
-#define GPIOE_PIN0                  0U\r
-#define GPIOE_LED2                  1U\r
-#define GPIOE_LED_YELLOW            1U\r
-#define GPIOE_PIN2                  2U\r
-#define GPIOE_PIN3                  3U\r
-#define GPIOE_PIN4                  4U\r
-#define GPIOE_PIN5                  5U\r
-#define GPIOE_PIN6                  6U\r
-#define GPIOE_PIN7                  7U\r
-#define GPIOE_PIN8                  8U\r
-#define GPIOE_PIN9                  9U\r
-#define GPIOE_PIN10                 10U\r
-#define GPIOE_PIN11                 11U\r
-#define GPIOE_PIN12                 12U\r
-#define GPIOE_PIN13                 13U\r
-#define GPIOE_PIN14                 14U\r
-#define GPIOE_PIN15                 15U\r
-\r
-#define GPIOF_PIN0                  0U\r
-#define GPIOF_PIN1                  1U\r
-#define GPIOF_PIN2                  2U\r
-#define GPIOF_PIN3                  3U\r
-#define GPIOF_PIN4                  4U\r
-#define GPIOF_PIN5                  5U\r
-#define GPIOF_PIN6                  6U\r
-#define GPIOF_PIN7                  7U\r
-#define GPIOF_PIN8                  8U\r
-#define GPIOF_PIN9                  9U\r
-#define GPIOF_PIN10                 10U\r
-#define GPIOF_PIN11                 11U\r
-#define GPIOF_PIN12                 12U\r
-#define GPIOF_PIN13                 13U\r
-#define GPIOF_PIN14                 14U\r
-#define GPIOF_PIN15                 15U\r
-\r
-#define GPIOG_PIN0                  0U\r
-#define GPIOG_PIN1                  1U\r
-#define GPIOG_PIN2                  2U\r
-#define GPIOG_PIN3                  3U\r
-#define GPIOG_PIN4                  4U\r
-#define GPIOG_PIN5                  5U\r
-#define GPIOG_USB_FS_PWR_EN         6U\r
-#define GPIOG_USB_FS_OVCR           7U\r
-#define GPIOG_PIN8                  8U\r
-#define GPIOG_PIN9                  9U\r
-#define GPIOG_PIN10                 10U\r
-#define GPIOG_RMII_TX_EN            11U\r
-#define GPIOG_PIN12                 12U\r
-#define GPIOG_RMII_TXD0             13U\r
-#define GPIOG_PIN14                 14U\r
-#define GPIOG_PIN15                 15U\r
-\r
-#define GPIOH_OSC_IN                0U\r
-#define GPIOH_OSC_OUT               1U\r
-#define GPIOH_PIN2                  2U\r
-#define GPIOH_PIN3                  3U\r
-#define GPIOH_PIN4                  4U\r
-#define GPIOH_PIN5                  5U\r
-#define GPIOH_PIN6                  6U\r
-#define GPIOH_PIN7                  7U\r
-#define GPIOH_PIN8                  8U\r
-#define GPIOH_PIN9                  9U\r
-#define GPIOH_PIN10                 10U\r
-#define GPIOH_PIN11                 11U\r
-#define GPIOH_PIN12                 12U\r
-#define GPIOH_PIN13                 13U\r
-#define GPIOH_PIN14                 14U\r
-#define GPIOH_PIN15                 15U\r
-\r
-#define GPIOI_PIN0                  0U\r
-#define GPIOI_PIN1                  1U\r
-#define GPIOI_PIN2                  2U\r
-#define GPIOI_PIN3                  3U\r
-#define GPIOI_PIN4                  4U\r
-#define GPIOI_PIN5                  5U\r
-#define GPIOI_PIN6                  6U\r
-#define GPIOI_PIN7                  7U\r
-#define GPIOI_PIN8                  8U\r
-#define GPIOI_PIN9                  9U\r
-#define GPIOI_PIN10                 10U\r
-#define GPIOI_PIN11                 11U\r
-#define GPIOI_PIN12                 12U\r
-#define GPIOI_PIN13                 13U\r
-#define GPIOI_PIN14                 14U\r
-#define GPIOI_PIN15                 15U\r
-\r
-#define GPIOJ_PIN0                  0U\r
-#define GPIOJ_PIN1                  1U\r
-#define GPIOJ_PIN2                  2U\r
-#define GPIOJ_PIN3                  3U\r
-#define GPIOJ_PIN4                  4U\r
-#define GPIOJ_PIN5                  5U\r
-#define GPIOJ_PIN6                  6U\r
-#define GPIOJ_PIN7                  7U\r
-#define GPIOJ_PIN8                  8U\r
-#define GPIOJ_PIN9                  9U\r
-#define GPIOJ_PIN10                 10U\r
-#define GPIOJ_PIN11                 11U\r
-#define GPIOJ_PIN12                 12U\r
-#define GPIOJ_PIN13                 13U\r
-#define GPIOJ_PIN14                 14U\r
-#define GPIOJ_PIN15                 15U\r
-\r
-#define GPIOK_PIN0                  0U\r
-#define GPIOK_PIN1                  1U\r
-#define GPIOK_PIN2                  2U\r
-#define GPIOK_PIN3                  3U\r
-#define GPIOK_PIN4                  4U\r
-#define GPIOK_PIN5                  5U\r
-#define GPIOK_PIN6                  6U\r
-#define GPIOK_PIN7                  7U\r
-#define GPIOK_PIN8                  8U\r
-#define GPIOK_PIN9                  9U\r
-#define GPIOK_PIN10                 10U\r
-#define GPIOK_PIN11                 11U\r
-#define GPIOK_PIN12                 12U\r
-#define GPIOK_PIN13                 13U\r
-#define GPIOK_PIN14                 14U\r
-#define GPIOK_PIN15                 15U\r
-\r
-/*\r
- * IO lines assignments.\r
- */\r
-#define LINE_RMII_REF_CLK           PAL_LINE(GPIOA, 1U)\r
-#define LINE_RMII_MDIO              PAL_LINE(GPIOA, 2U)\r
-#define LINE_RMII_CRS_DV            PAL_LINE(GPIOA, 7U)\r
-#define LINE_USB_SOF                PAL_LINE(GPIOA, 8U)\r
-#define LINE_MCO1                   PAL_LINE(GPIOA, 8U)\r
-#define LINE_USB_VBUS               PAL_LINE(GPIOA, 9U)\r
-#define LINE_USB_ID                 PAL_LINE(GPIOA, 10U)\r
-#define LINE_USB_DM                 PAL_LINE(GPIOA, 11U)\r
-#define LINE_USB_DP                 PAL_LINE(GPIOA, 12U)\r
-#define LINE_SWDIO                  PAL_LINE(GPIOA, 13U)\r
-#define LINE_SWCLK                  PAL_LINE(GPIOA, 14U)\r
-#define LINE_T_JTDI                 PAL_LINE(GPIOA, 15U)\r
-#define LINE_LED1                   PAL_LINE(GPIOB, 0U)\r
-#define LINE_LED_GREEN              PAL_LINE(GPIOB, 0U)\r
-#define LINE_LED                    PAL_LINE(GPIOB, 0U)\r
-#define LINE_SWO                    PAL_LINE(GPIOB, 3U)\r
-#define LINE_LED2                   PAL_LINE(GPIOE, 1U)\r
-#define LINE_LED_YELLOW             PAL_LINE(GPIOE, 1U)\r
-#define LINE_RMII_TXD1              PAL_LINE(GPIOB, 13U)\r
-#define LINE_LED3                   PAL_LINE(GPIOB, 14U)\r
-#define LINE_LED_RED                PAL_LINE(GPIOB, 14U)\r
-#define LINE_RMII_MDC               PAL_LINE(GPIOC, 1U)\r
-#define LINE_RMII_RXD0              PAL_LINE(GPIOC, 4U)\r
-#define LINE_RMII_RXD1              PAL_LINE(GPIOC, 5U)\r
-#define LINE_BUTTON                 PAL_LINE(GPIOC, 13U)\r
-#define LINE_OSC32_IN               PAL_LINE(GPIOC, 14U)\r
-#define LINE_OSC32_OUT              PAL_LINE(GPIOC, 15U)\r
-#define LINE_USART3_RX              PAL_LINE(GPIOD, 8U)\r
-#define LINE_STLK_RX                PAL_LINE(GPIOD, 8U)\r
-#define LINE_USART3_TX              PAL_LINE(GPIOD, 9U)\r
-#define LINE_STLK_TX                PAL_LINE(GPIOD, 9U)\r
-#define LINE_USB_FS_PWR_EN          PAL_LINE(GPIOG, 6U)\r
-#define LINE_USB_FS_OVCR            PAL_LINE(GPIOG, 7U)\r
-#define LINE_RMII_TX_EN             PAL_LINE(GPIOG, 11U)\r
-#define LINE_RMII_TXD0              PAL_LINE(GPIOG, 13U)\r
-#define LINE_OSC_IN                 PAL_LINE(GPIOH, 0U)\r
-#define LINE_OSC_OUT                PAL_LINE(GPIOH, 1U)\r
-\r
-/*===========================================================================*/\r
-/* Driver pre-compile time settings.                                         */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Derived constants and error checks.                                       */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Driver data structures and types.                                         */\r
-/*===========================================================================*/\r
-\r
-/*===========================================================================*/\r
-/* Driver macros.                                                            */\r
-/*===========================================================================*/\r
-\r
-/*\r
- * I/O ports initial setup, this configuration is established soon after reset\r
- * in the initialization code.\r
- * Please refer to the STM32 Reference Manual for details.\r
- */\r
-#define PIN_MODE_INPUT(n)           (0U << ((n) * 2U))\r
-#define PIN_MODE_OUTPUT(n)          (1U << ((n) * 2U))\r
-#define PIN_MODE_ALTERNATE(n)       (2U << ((n) * 2U))\r
-#define PIN_MODE_ANALOG(n)          (3U << ((n) * 2U))\r
-#define PIN_ODR_LOW(n)              (0U << (n))\r
-#define PIN_ODR_HIGH(n)             (1U << (n))\r
-#define PIN_OTYPE_PUSHPULL(n)       (0U << (n))\r
-#define PIN_OTYPE_OPENDRAIN(n)      (1U << (n))\r
-#define PIN_OSPEED_VERYLOW(n)       (0U << ((n) * 2U))\r
-#define PIN_OSPEED_LOW(n)           (1U << ((n) * 2U))\r
-#define PIN_OSPEED_MEDIUM(n)        (2U << ((n) * 2U))\r
-#define PIN_OSPEED_HIGH(n)          (3U << ((n) * 2U))\r
-#define PIN_PUPDR_FLOATING(n)       (0U << ((n) * 2U))\r
-#define PIN_PUPDR_PULLUP(n)         (1U << ((n) * 2U))\r
-#define PIN_PUPDR_PULLDOWN(n)       (2U << ((n) * 2U))\r
-#define PIN_AFIO_AF(n, v)           ((v) << (((n) % 8U) * 4U))\r
-\r
-/*\r
- * GPIOA setup:\r
- *\r
- * PA0  - PIN0                      (input pullup).\r
- * PA1  - RMII_REF_CLK              (alternate 11).\r
- * PA2  - RMII_MDIO                 (alternate 11).\r
- * PA3  - PIN3                      (input pullup).\r
- * PA4  - PIN4                      (input pullup).\r
- * PA5  - PIN5                      (input pullup).\r
- * PA6  - PIN6                      (input pullup).\r
- * PA7  - RMII_CRS_DV               (alternate 11).\r
- * PA8  - USB_SOF MCO1              (alternate 10).\r
- * PA9  - USB_VBUS                  (analog).\r
- * PA10 - USB_ID                    (alternate 10).\r
- * PA11 - USB_DM                    (alternate 10).\r
- * PA12 - USB_DP                    (alternate 10).\r
- * PA13 - SWDIO                     (alternate 0).\r
- * PA14 - SWCLK                     (alternate 0).\r
- * PA15 - T_JTDI                    (alternate 0).\r
- */\r
-#define VAL_GPIOA_MODER             (PIN_MODE_INPUT(GPIOA_PIN0) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_RMII_REF_CLK) |\\r
-                                     PIN_MODE_ALTERNATE(GPIOA_RMII_MDIO) |  \\r
-                                     PIN_MODE_INPUT(GPIOA_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOA_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOA_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOA_PIN6) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_RMII_CRS_DV) |\\r
-                                     PIN_MODE_ALTERNATE(GPIOA_USB_SOF) |    \\r
-                                     PIN_MODE_ANALOG(GPIOA_USB_VBUS) |      \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_USB_ID) |     \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_USB_DM) |     \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_USB_DP) |     \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_SWDIO) |      \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_SWCLK) |      \\r
-                                     PIN_MODE_ALTERNATE(GPIOA_T_JTDI))\r
-#define VAL_GPIOA_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_REF_CLK) |\\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_MDIO) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_CRS_DV) |\\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_SOF) |    \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_VBUS) |   \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_ID) |     \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) |     \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) |     \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOA_T_JTDI))\r
-#define VAL_GPIOA_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOA_PIN0) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOA_RMII_REF_CLK) |  \\r
-                                     PIN_OSPEED_HIGH(GPIOA_RMII_MDIO) |     \\r
-                                     PIN_OSPEED_VERYLOW(GPIOA_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOA_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOA_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOA_PIN6) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOA_RMII_CRS_DV) |   \\r
-                                     PIN_OSPEED_HIGH(GPIOA_USB_SOF) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOA_USB_VBUS) |      \\r
-                                     PIN_OSPEED_HIGH(GPIOA_USB_ID) |        \\r
-                                     PIN_OSPEED_HIGH(GPIOA_USB_DM) |        \\r
-                                     PIN_OSPEED_HIGH(GPIOA_USB_DP) |        \\r
-                                     PIN_OSPEED_HIGH(GPIOA_SWDIO) |         \\r
-                                     PIN_OSPEED_HIGH(GPIOA_SWCLK) |         \\r
-                                     PIN_OSPEED_HIGH(GPIOA_T_JTDI))\r
-#define VAL_GPIOA_PUPDR             (PIN_PUPDR_PULLUP(GPIOA_PIN0) |         \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_RMII_REF_CLK) |\\r
-                                     PIN_PUPDR_PULLUP(GPIOA_RMII_MDIO) |    \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_RMII_CRS_DV) |  \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_USB_SOF) |    \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_USB_VBUS) |   \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_USB_ID) |     \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_USB_DM) |     \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_USB_DP) |     \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_SWDIO) |      \\r
-                                     PIN_PUPDR_FLOATING(GPIOA_SWCLK) |      \\r
-                                     PIN_PUPDR_PULLUP(GPIOA_T_JTDI))\r
-#define VAL_GPIOA_ODR               (PIN_ODR_HIGH(GPIOA_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOA_RMII_REF_CLK) |     \\r
-                                     PIN_ODR_HIGH(GPIOA_RMII_MDIO) |        \\r
-                                     PIN_ODR_HIGH(GPIOA_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOA_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOA_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOA_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOA_RMII_CRS_DV) |      \\r
-                                     PIN_ODR_HIGH(GPIOA_USB_SOF) |          \\r
-                                     PIN_ODR_HIGH(GPIOA_USB_VBUS) |         \\r
-                                     PIN_ODR_HIGH(GPIOA_USB_ID) |           \\r
-                                     PIN_ODR_HIGH(GPIOA_USB_DM) |           \\r
-                                     PIN_ODR_HIGH(GPIOA_USB_DP) |           \\r
-                                     PIN_ODR_HIGH(GPIOA_SWDIO) |            \\r
-                                     PIN_ODR_HIGH(GPIOA_SWCLK) |            \\r
-                                     PIN_ODR_HIGH(GPIOA_T_JTDI))\r
-#define VAL_GPIOA_AFRL              (PIN_AFIO_AF(GPIOA_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOA_RMII_REF_CLK, 11U) | \\r
-                                     PIN_AFIO_AF(GPIOA_RMII_MDIO, 11U) |    \\r
-                                     PIN_AFIO_AF(GPIOA_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOA_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOA_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOA_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOA_RMII_CRS_DV, 11U))\r
-#define VAL_GPIOA_AFRH              (PIN_AFIO_AF(GPIOA_USB_SOF, 10U) |      \\r
-                                     PIN_AFIO_AF(GPIOA_USB_VBUS, 0U) |      \\r
-                                     PIN_AFIO_AF(GPIOA_USB_ID, 10U) |       \\r
-                                     PIN_AFIO_AF(GPIOA_USB_DM, 10U) |       \\r
-                                     PIN_AFIO_AF(GPIOA_USB_DP, 10U) |       \\r
-                                     PIN_AFIO_AF(GPIOA_SWDIO, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOA_SWCLK, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOA_T_JTDI, 0U))\r
-\r
-/*\r
- * GPIOB setup:\r
- *\r
- * PB0  - LED1 LED_GREEN LED        (output pushpull maximum).\r
- * PB1  - PIN1                      (input pullup).\r
- * PB2  - PIN2                      (input pullup).\r
- * PB3  - SWO                       (alternate 0).\r
- * PB4  - PIN4                      (input pullup).\r
- * PB5  - PIN5                      (input pullup).\r
- * PB6  - PIN6                      (input pullup).\r
- * PB7  - PIN7                      (input pullup).\r
- * PB8  - PIN8                      (input pullup).\r
- * PB9  - PIN9                      (input pullup).\r
- * PB10 - PIN10                     (input pullup).\r
- * PB11 - PIN11                     (input pullup).\r
- * PB12 - PIN12                     (input pullup).\r
- * PB13 - RMII_TXD1                 (alternate 11).\r
- * PB14 - LED3 LED_RED              (output pushpull maximum).\r
- * PB15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOB_MODER             (PIN_MODE_OUTPUT(GPIOB_LED1) |          \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN2) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOB_SWO) |        \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN12) |          \\r
-                                     PIN_MODE_ALTERNATE(GPIOB_RMII_TXD1) |  \\r
-                                     PIN_MODE_OUTPUT(GPIOB_LED3) |          \\r
-                                     PIN_MODE_INPUT(GPIOB_PIN15))\r
-#define VAL_GPIOB_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOB_LED1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_SWO) |        \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_RMII_TXD1) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_LED3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN15))\r
-#define VAL_GPIOB_OSPEEDR           (PIN_OSPEED_HIGH(GPIOB_LED1) |          \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN2) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOB_SWO) |           \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN12) |      \\r
-                                     PIN_OSPEED_HIGH(GPIOB_RMII_TXD1) |     \\r
-                                     PIN_OSPEED_HIGH(GPIOB_LED3) |          \\r
-                                     PIN_OSPEED_VERYLOW(GPIOB_PIN15))\r
-#define VAL_GPIOB_PUPDR             (PIN_PUPDR_FLOATING(GPIOB_LED1) |       \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_SWO) |          \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN7) |       \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_RMII_TXD1) |    \\r
-                                     PIN_PUPDR_FLOATING(GPIOB_LED3) |       \\r
-                                     PIN_PUPDR_PULLUP(GPIOB_PIN15))\r
-#define VAL_GPIOB_ODR               (PIN_ODR_LOW(GPIOB_LED1) |              \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_SWO) |              \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOB_RMII_TXD1) |        \\r
-                                     PIN_ODR_LOW(GPIOB_LED3) |              \\r
-                                     PIN_ODR_HIGH(GPIOB_PIN15))\r
-#define VAL_GPIOB_AFRL              (PIN_AFIO_AF(GPIOB_LED1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_SWO, 0U) |           \\r
-                                     PIN_AFIO_AF(GPIOB_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN7, 0U))\r
-#define VAL_GPIOB_AFRH              (PIN_AFIO_AF(GPIOB_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOB_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOB_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOB_RMII_TXD1, 11U) |    \\r
-                                     PIN_AFIO_AF(GPIOB_LED3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOB_PIN15, 0U))\r
-\r
-/*\r
- * GPIOC setup:\r
- *\r
- * PC0  - PIN0                      (input pullup).\r
- * PC1  - RMII_MDC                  (alternate 11).\r
- * PC2  - PIN2                      (input pullup).\r
- * PC3  - PIN3                      (input pullup).\r
- * PC4  - RMII_RXD0                 (alternate 11).\r
- * PC5  - RMII_RXD1                 (alternate 11).\r
- * PC6  - PIN6                      (input pullup).\r
- * PC7  - PIN7                      (input pullup).\r
- * PC8  - PIN8                      (input pullup).\r
- * PC9  - PIN9                      (input pullup).\r
- * PC10 - PIN10                     (input pullup).\r
- * PC11 - PIN11                     (input pullup).\r
- * PC12 - PIN12                     (input pullup).\r
- * PC13 - BUTTON                    (input floating).\r
- * PC14 - OSC32_IN                  (input floating).\r
- * PC15 - OSC32_OUT                 (input floating).\r
- */\r
-#define VAL_GPIOC_MODER             (PIN_MODE_INPUT(GPIOC_PIN0) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOC_RMII_MDC) |   \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN3) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOC_RMII_RXD0) |  \\r
-                                     PIN_MODE_ALTERNATE(GPIOC_RMII_RXD1) |  \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOC_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOC_BUTTON) |         \\r
-                                     PIN_MODE_INPUT(GPIOC_OSC32_IN) |       \\r
-                                     PIN_MODE_INPUT(GPIOC_OSC32_OUT))\r
-#define VAL_GPIOC_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_MDC) |   \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_RXD0) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_RXD1) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_BUTTON) |     \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) |   \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))\r
-#define VAL_GPIOC_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOC_PIN0) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOC_RMII_MDC) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN3) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOC_RMII_RXD0) |     \\r
-                                     PIN_OSPEED_HIGH(GPIOC_RMII_RXD1) |     \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_PIN12) |      \\r
-                                     PIN_OSPEED_HIGH(GPIOC_BUTTON) |        \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_OSC32_IN) |   \\r
-                                     PIN_OSPEED_VERYLOW(GPIOC_OSC32_OUT))\r
-#define VAL_GPIOC_PUPDR             (PIN_PUPDR_PULLUP(GPIOC_PIN0) |         \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_RMII_MDC) |   \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN3) |         \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_RMII_RXD0) |  \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_RMII_RXD1) |  \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOC_PIN12) |        \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_BUTTON) |     \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) |   \\r
-                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))\r
-#define VAL_GPIOC_ODR               (PIN_ODR_HIGH(GPIOC_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_RMII_MDC) |         \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_RMII_RXD0) |        \\r
-                                     PIN_ODR_HIGH(GPIOC_RMII_RXD1) |        \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOC_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOC_BUTTON) |           \\r
-                                     PIN_ODR_HIGH(GPIOC_OSC32_IN) |         \\r
-                                     PIN_ODR_HIGH(GPIOC_OSC32_OUT))\r
-#define VAL_GPIOC_AFRL              (PIN_AFIO_AF(GPIOC_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_RMII_MDC, 11U) |     \\r
-                                     PIN_AFIO_AF(GPIOC_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_RMII_RXD0, 11U) |    \\r
-                                     PIN_AFIO_AF(GPIOC_RMII_RXD1, 11U) |    \\r
-                                     PIN_AFIO_AF(GPIOC_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_PIN7, 0U))\r
-#define VAL_GPIOC_AFRH              (PIN_AFIO_AF(GPIOC_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOC_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOC_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOC_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOC_BUTTON, 0U) |        \\r
-                                     PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) |      \\r
-                                     PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))\r
-\r
-/*\r
- * GPIOD setup:\r
- *\r
- * PD0  - PIN0                      (input pullup).\r
- * PD1  - PIN1                      (input pullup).\r
- * PD2  - PIN2                      (input pullup).\r
- * PD3  - PIN3                      (input pullup).\r
- * PD4  - PIN4                      (input pullup).\r
- * PD5  - PIN5                      (input pullup).\r
- * PD6  - PIN6                      (input pullup).\r
- * PD7  - PIN7                      (input pullup).\r
- * PD8  - USART3_RX STLK_RX         (alternate 7).\r
- * PD9  - USART3_TX STLK_TX         (alternate 7).\r
- * PD10 - PIN10                     (input pullup).\r
- * PD11 - PIN11                     (input pullup).\r
- * PD12 - PIN12                     (input pullup).\r
- * PD13 - PIN13                     (input pullup).\r
- * PD14 - PIN14                     (input pullup).\r
- * PD15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOD_MODER             (PIN_MODE_INPUT(GPIOD_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN7) |           \\r
-                                     PIN_MODE_ALTERNATE(GPIOD_USART3_RX) |  \\r
-                                     PIN_MODE_ALTERNATE(GPIOD_USART3_TX) |  \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOD_PIN15))\r
-#define VAL_GPIOD_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_USART3_RX) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_USART3_TX) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN15))\r
-#define VAL_GPIOD_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOD_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN7) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOD_USART3_RX) |     \\r
-                                     PIN_OSPEED_HIGH(GPIOD_USART3_TX) |     \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOD_PIN15))\r
-#define VAL_GPIOD_PUPDR             (PIN_PUPDR_PULLUP(GPIOD_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN7) |         \\r
-                                     PIN_PUPDR_FLOATING(GPIOD_USART3_RX) |  \\r
-                                     PIN_PUPDR_FLOATING(GPIOD_USART3_TX) |  \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOD_PIN15))\r
-#define VAL_GPIOD_ODR               (PIN_ODR_HIGH(GPIOD_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOD_USART3_RX) |        \\r
-                                     PIN_ODR_HIGH(GPIOD_USART3_TX) |        \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOD_PIN15))\r
-#define VAL_GPIOD_AFRL              (PIN_AFIO_AF(GPIOD_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOD_PIN7, 0U))\r
-#define VAL_GPIOD_AFRH              (PIN_AFIO_AF(GPIOD_USART3_RX, 7U) |     \\r
-                                     PIN_AFIO_AF(GPIOD_USART3_TX, 7U) |     \\r
-                                     PIN_AFIO_AF(GPIOD_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOD_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOD_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOD_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOD_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOD_PIN15, 0U))\r
-\r
-/*\r
- * GPIOE setup:\r
- *\r
- * PE0  - PIN0                      (input pullup).\r
- * PE1  - PIN1                      (input pullup).\r
- * PE2  - PIN2                      (input pullup).\r
- * PE3  - PIN3                      (input pullup).\r
- * PE4  - PIN4                      (input pullup).\r
- * PE5  - PIN5                      (input pullup).\r
- * PE6  - PIN6                      (input pullup).\r
- * PE7  - PIN7                      (input pullup).\r
- * PE8  - PIN8                      (input pullup).\r
- * PE9  - PIN9                      (input pullup).\r
- * PE10 - PIN10                     (input pullup).\r
- * PE11 - PIN11                     (input pullup).\r
- * PE12 - PIN12                     (input pullup).\r
- * PE13 - PIN13                     (input pullup).\r
- * PE14 - PIN14                     (input pullup).\r
- * PE15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOE_MODER             (PIN_MODE_INPUT(GPIOE_PIN0) |           \\r
-                                     PIN_MODE_OUTPUT(GPIOE_LED2) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOE_PIN15))\r
-#define VAL_GPIOE_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_LED2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN15))\r
-#define VAL_GPIOE_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOE_PIN0) |       \\r
-                                     PIN_OSPEED_HIGH(GPIOE_LED2) |          \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOE_PIN15))\r
-#define VAL_GPIOE_PUPDR             (PIN_PUPDR_PULLUP(GPIOE_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_LED2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOE_PIN15))\r
-#define VAL_GPIOE_ODR               (PIN_ODR_HIGH(GPIOE_PIN0) |             \\r
-                                     PIN_ODR_LOW(GPIOE_LED2) |              \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOE_PIN15))\r
-#define VAL_GPIOE_AFRL              (PIN_AFIO_AF(GPIOE_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_LED2, 0U)) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN7, 0U)\r
-#define VAL_GPIOE_AFRH              (PIN_AFIO_AF(GPIOE_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOE_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOE_PIN15, 0U))\r
-\r
-/*\r
- * GPIOF setup:\r
- *\r
- * PF0  - PIN0                      (input pullup).\r
- * PF1  - PIN1                      (input pullup).\r
- * PF2  - PIN2                      (input pullup).\r
- * PF3  - PIN3                      (input pullup).\r
- * PF4  - PIN4                      (input pullup).\r
- * PF5  - PIN5                      (input pullup).\r
- * PF6  - PIN6                      (input pullup).\r
- * PF7  - PIN7                      (input pullup).\r
- * PF8  - PIN8                      (input pullup).\r
- * PF9  - PIN9                      (input pullup).\r
- * PF10 - PIN10                     (input pullup).\r
- * PF11 - PIN11                     (input pullup).\r
- * PF12 - PIN12                     (input pullup).\r
- * PF13 - PIN13                     (input pullup).\r
- * PF14 - PIN14                     (input pullup).\r
- * PF15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOF_MODER             (PIN_MODE_INPUT(GPIOF_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOF_PIN15))\r
-#define VAL_GPIOF_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOF_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN15))\r
-#define VAL_GPIOF_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOF_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOF_PIN15))\r
-#define VAL_GPIOF_PUPDR             (PIN_PUPDR_PULLUP(GPIOF_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOF_PIN15))\r
-#define VAL_GPIOF_ODR               (PIN_ODR_HIGH(GPIOF_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOF_PIN15))\r
-#define VAL_GPIOF_AFRL              (PIN_AFIO_AF(GPIOF_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN7, 0U))\r
-#define VAL_GPIOF_AFRH              (PIN_AFIO_AF(GPIOF_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOF_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOF_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOF_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOF_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOF_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOF_PIN15, 0U))\r
-\r
-/*\r
- * GPIOG setup:\r
- *\r
- * PG0  - PIN0                      (input pullup).\r
- * PG1  - PIN1                      (input pullup).\r
- * PG2  - PIN2                      (input pullup).\r
- * PG3  - PIN3                      (input pullup).\r
- * PG4  - PIN4                      (input pullup).\r
- * PG5  - PIN5                      (input pullup).\r
- * PG6  - USB_FS_PWR_EN             (output pushpull minimum).\r
- * PG7  - USB_FS_OVCR               (input floating).\r
- * PG8  - PIN8                      (input pullup).\r
- * PG9  - PIN9                      (input pullup).\r
- * PG10 - PIN10                     (input pullup).\r
- * PG11 - RMII_TX_EN                (alternate 11).\r
- * PG12 - PIN12                     (input pullup).\r
- * PG13 - RMII_TXD0                 (alternate 11).\r
- * PG14 - PIN14                     (input pullup).\r
- * PG15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOG_MODER             (PIN_MODE_INPUT(GPIOG_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN5) |           \\r
-                                     PIN_MODE_OUTPUT(GPIOG_USB_FS_PWR_EN) | \\r
-                                     PIN_MODE_INPUT(GPIOG_USB_FS_OVCR) |    \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN10) |          \\r
-                                     PIN_MODE_ALTERNATE(GPIOG_RMII_TX_EN) | \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN12) |          \\r
-                                     PIN_MODE_ALTERNATE(GPIOG_RMII_TXD0) |  \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOG_PIN15))\r
-#define VAL_GPIOG_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOG_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_USB_FS_PWR_EN) |\\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_USB_FS_OVCR) |\\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_RMII_TX_EN) | \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_RMII_TXD0) |  \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN15))\r
-#define VAL_GPIOG_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOG_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_USB_FS_PWR_EN) |\\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_USB_FS_OVCR) |\\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN10) |      \\r
-                                     PIN_OSPEED_HIGH(GPIOG_RMII_TX_EN) |    \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN12) |      \\r
-                                     PIN_OSPEED_HIGH(GPIOG_RMII_TXD0) |     \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOG_PIN15))\r
-#define VAL_GPIOG_PUPDR             (PIN_PUPDR_PULLUP(GPIOG_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN5) |         \\r
-                                     PIN_PUPDR_FLOATING(GPIOG_USB_FS_PWR_EN) |\\r
-                                     PIN_PUPDR_FLOATING(GPIOG_USB_FS_OVCR) |\\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN10) |        \\r
-                                     PIN_PUPDR_FLOATING(GPIOG_RMII_TX_EN) | \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN12) |        \\r
-                                     PIN_PUPDR_FLOATING(GPIOG_RMII_TXD0) |  \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOG_PIN15))\r
-#define VAL_GPIOG_ODR               (PIN_ODR_HIGH(GPIOG_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN5) |             \\r
-                                     PIN_ODR_LOW(GPIOG_USB_FS_PWR_EN) |     \\r
-                                     PIN_ODR_HIGH(GPIOG_USB_FS_OVCR) |      \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOG_RMII_TX_EN) |       \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOG_RMII_TXD0) |        \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOG_PIN15))\r
-#define VAL_GPIOG_AFRL              (PIN_AFIO_AF(GPIOG_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_USB_FS_PWR_EN, 0U) | \\r
-                                     PIN_AFIO_AF(GPIOG_USB_FS_OVCR, 0U))\r
-#define VAL_GPIOG_AFRH              (PIN_AFIO_AF(GPIOG_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOG_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOG_RMII_TX_EN, 11U) |   \\r
-                                     PIN_AFIO_AF(GPIOG_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOG_RMII_TXD0, 11U) |    \\r
-                                     PIN_AFIO_AF(GPIOG_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOG_PIN15, 0U))\r
-\r
-/*\r
- * GPIOH setup:\r
- *\r
- * PH0  - OSC_IN                    (input floating).\r
- * PH1  - OSC_OUT                   (input floating).\r
- * PH2  - PIN2                      (input pullup).\r
- * PH3  - PIN3                      (input pullup).\r
- * PH4  - PIN4                      (input pullup).\r
- * PH5  - PIN5                      (input pullup).\r
- * PH6  - PIN6                      (input pullup).\r
- * PH7  - PIN7                      (input pullup).\r
- * PH8  - PIN8                      (input pullup).\r
- * PH9  - PIN9                      (input pullup).\r
- * PH10 - PIN10                     (input pullup).\r
- * PH11 - PIN11                     (input pullup).\r
- * PH12 - PIN12                     (input pullup).\r
- * PH13 - PIN13                     (input pullup).\r
- * PH14 - PIN14                     (input pullup).\r
- * PH15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOH_MODER             (PIN_MODE_INPUT(GPIOH_OSC_IN) |         \\r
-                                     PIN_MODE_INPUT(GPIOH_OSC_OUT) |        \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOH_PIN15))\r
-#define VAL_GPIOH_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOH_OSC_IN) |     \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_OSC_OUT) |    \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN15))\r
-#define VAL_GPIOH_OSPEEDR           (PIN_OSPEED_HIGH(GPIOH_OSC_IN) |        \\r
-                                     PIN_OSPEED_HIGH(GPIOH_OSC_OUT) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOH_PIN15))\r
-#define VAL_GPIOH_PUPDR             (PIN_PUPDR_FLOATING(GPIOH_OSC_IN) |     \\r
-                                     PIN_PUPDR_FLOATING(GPIOH_OSC_OUT) |    \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOH_PIN15))\r
-#define VAL_GPIOH_ODR               (PIN_ODR_HIGH(GPIOH_OSC_IN) |           \\r
-                                     PIN_ODR_HIGH(GPIOH_OSC_OUT) |          \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOH_PIN15))\r
-#define VAL_GPIOH_AFRL              (PIN_AFIO_AF(GPIOH_OSC_IN, 0U) |        \\r
-                                     PIN_AFIO_AF(GPIOH_OSC_OUT, 0U) |       \\r
-                                     PIN_AFIO_AF(GPIOH_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN7, 0U))\r
-#define VAL_GPIOH_AFRH              (PIN_AFIO_AF(GPIOH_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOH_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOH_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOH_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOH_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOH_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOH_PIN15, 0U))\r
-\r
-/*\r
- * GPIOI setup:\r
- *\r
- * PI0  - PIN0                      (input pullup).\r
- * PI1  - PIN1                      (input pullup).\r
- * PI2  - PIN2                      (input pullup).\r
- * PI3  - PIN3                      (input pullup).\r
- * PI4  - PIN4                      (input pullup).\r
- * PI5  - PIN5                      (input pullup).\r
- * PI6  - PIN6                      (input pullup).\r
- * PI7  - PIN7                      (input pullup).\r
- * PI8  - PIN8                      (input pullup).\r
- * PI9  - PIN9                      (input pullup).\r
- * PI10 - PIN10                     (input pullup).\r
- * PI11 - PIN11                     (input pullup).\r
- * PI12 - PIN12                     (input pullup).\r
- * PI13 - PIN13                     (input pullup).\r
- * PI14 - PIN14                     (input pullup).\r
- * PI15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOI_MODER             (PIN_MODE_INPUT(GPIOI_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOI_PIN15))\r
-#define VAL_GPIOI_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOI_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN15))\r
-#define VAL_GPIOI_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOI_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOI_PIN15))\r
-#define VAL_GPIOI_PUPDR             (PIN_PUPDR_PULLUP(GPIOI_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOI_PIN15))\r
-#define VAL_GPIOI_ODR               (PIN_ODR_HIGH(GPIOI_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOI_PIN15))\r
-#define VAL_GPIOI_AFRL              (PIN_AFIO_AF(GPIOI_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN7, 0U))\r
-#define VAL_GPIOI_AFRH              (PIN_AFIO_AF(GPIOI_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOI_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOI_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOI_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOI_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOI_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOI_PIN15, 0U))\r
-\r
-/*\r
- * GPIOJ setup:\r
- *\r
- * PJ0  - PIN0                      (input pullup).\r
- * PJ1  - PIN1                      (input pullup).\r
- * PJ2  - PIN2                      (input pullup).\r
- * PJ3  - PIN3                      (input pullup).\r
- * PJ4  - PIN4                      (input pullup).\r
- * PJ5  - PIN5                      (input pullup).\r
- * PJ6  - PIN6                      (input pullup).\r
- * PJ7  - PIN7                      (input pullup).\r
- * PJ8  - PIN8                      (input pullup).\r
- * PJ9  - PIN9                      (input pullup).\r
- * PJ10 - PIN10                     (input pullup).\r
- * PJ11 - PIN11                     (input pullup).\r
- * PJ12 - PIN12                     (input pullup).\r
- * PJ13 - PIN13                     (input pullup).\r
- * PJ14 - PIN14                     (input pullup).\r
- * PJ15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOJ_MODER             (PIN_MODE_INPUT(GPIOJ_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOJ_PIN15))\r
-#define VAL_GPIOJ_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOJ_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN15))\r
-#define VAL_GPIOJ_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOJ_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN15))\r
-#define VAL_GPIOJ_PUPDR             (PIN_PUPDR_PULLUP(GPIOJ_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOJ_PIN15))\r
-#define VAL_GPIOJ_ODR               (PIN_ODR_HIGH(GPIOJ_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOJ_PIN15))\r
-#define VAL_GPIOJ_AFRL              (PIN_AFIO_AF(GPIOJ_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN7, 0U))\r
-#define VAL_GPIOJ_AFRH              (PIN_AFIO_AF(GPIOJ_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOJ_PIN15, 0U))\r
-\r
-/*\r
- * GPIOK setup:\r
- *\r
- * PK0  - PIN0                      (input pullup).\r
- * PK1  - PIN1                      (input pullup).\r
- * PK2  - PIN2                      (input pullup).\r
- * PK3  - PIN3                      (input pullup).\r
- * PK4  - PIN4                      (input pullup).\r
- * PK5  - PIN5                      (input pullup).\r
- * PK6  - PIN6                      (input pullup).\r
- * PK7  - PIN7                      (input pullup).\r
- * PK8  - PIN8                      (input pullup).\r
- * PK9  - PIN9                      (input pullup).\r
- * PK10 - PIN10                     (input pullup).\r
- * PK11 - PIN11                     (input pullup).\r
- * PK12 - PIN12                     (input pullup).\r
- * PK13 - PIN13                     (input pullup).\r
- * PK14 - PIN14                     (input pullup).\r
- * PK15 - PIN15                     (input pullup).\r
- */\r
-#define VAL_GPIOK_MODER             (PIN_MODE_INPUT(GPIOK_PIN0) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN1) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN2) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN3) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN4) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN5) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN6) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN7) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN8) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN9) |           \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN10) |          \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN11) |          \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN12) |          \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN13) |          \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN14) |          \\r
-                                     PIN_MODE_INPUT(GPIOK_PIN15))\r
-#define VAL_GPIOK_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOK_PIN0) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN1) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN2) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN3) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN4) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN5) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN6) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN7) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN8) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN9) |       \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN10) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN11) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN12) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN13) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN14) |      \\r
-                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN15))\r
-#define VAL_GPIOK_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOK_PIN0) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN1) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN2) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN3) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN4) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN5) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN6) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN7) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN8) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN9) |       \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN10) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN11) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN12) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN13) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN14) |      \\r
-                                     PIN_OSPEED_VERYLOW(GPIOK_PIN15))\r
-#define VAL_GPIOK_PUPDR             (PIN_PUPDR_PULLUP(GPIOK_PIN0) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN1) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN2) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN3) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN4) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN5) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN6) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN7) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN8) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN9) |         \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN10) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN11) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN12) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN13) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN14) |        \\r
-                                     PIN_PUPDR_PULLUP(GPIOK_PIN15))\r
-#define VAL_GPIOK_ODR               (PIN_ODR_HIGH(GPIOK_PIN0) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN1) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN2) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN3) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN4) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN5) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN6) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN7) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN8) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN9) |             \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN10) |            \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN11) |            \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN12) |            \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN13) |            \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN14) |            \\r
-                                     PIN_ODR_HIGH(GPIOK_PIN15))\r
-#define VAL_GPIOK_AFRL              (PIN_AFIO_AF(GPIOK_PIN0, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN1, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN2, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN3, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN4, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN5, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN6, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN7, 0U))\r
-#define VAL_GPIOK_AFRH              (PIN_AFIO_AF(GPIOK_PIN8, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN9, 0U) |          \\r
-                                     PIN_AFIO_AF(GPIOK_PIN10, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOK_PIN11, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOK_PIN12, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOK_PIN13, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOK_PIN14, 0U) |         \\r
-                                     PIN_AFIO_AF(GPIOK_PIN15, 0U))\r
-\r
-/*===========================================================================*/\r
-/* External declarations.                                                    */\r
-/*===========================================================================*/\r
-\r
-#if !defined(_FROM_ASM_)\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-  void boardInit(void);\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-#endif /* _FROM_ASM_ */\r
-\r
-#endif /* BOARD_H */\r
index b410cdbbdfb369a896e45e5653b8109b57fcaca9..f6df51a15ff34f500ff1a316fa1b5538b597da74 100644 (file)
@@ -1,8 +1,16 @@
 # List of all the board related files.\r
-BOARDSRC = ./board/board.c\r
+ifeq ($(TARGET_PLATFORM),H7)\r
+  BOARDSRC = ./board/board_h7.c\r
+else\r
+  BOARDSRC = ./board/board_l4.c\r
+endif\r
 \r
 # Required include directories\r
-BOARDINC = ./board\r
+ifeq ($(TARGET_PLATFORM),H7)\r
+  BOARDINC = ./board/h7\r
+else\r
+  BOARDINC = ./board/l4\r
+endif\r
 \r
 # Shared variables\r
 ALLCSRC += $(BOARDSRC)\r
diff --git a/board/board_h7.c b/board/board_h7.c
new file mode 100644 (file)
index 0000000..2868726
--- /dev/null
@@ -0,0 +1,266 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2019 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * This file has been automatically generated using ChibiStudio board\r
+ * generator plugin. Do not edit manually.\r
+ */\r
+\r
+#include "hal.h"\r
+#include "stm32_gpio.h"\r
+\r
+/*===========================================================================*/\r
+/* Driver local definitions.                                                 */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver exported variables.                                                */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver local variables and types.                                         */\r
+/*===========================================================================*/\r
+\r
+/**\r
+ * @brief   Type of STM32 GPIO port setup.\r
+ */\r
+typedef struct {\r
+  uint32_t              moder;\r
+  uint32_t              otyper;\r
+  uint32_t              ospeedr;\r
+  uint32_t              pupdr;\r
+  uint32_t              odr;\r
+  uint32_t              afrl;\r
+  uint32_t              afrh;\r
+} gpio_setup_t;\r
+\r
+/**\r
+ * @brief   Type of STM32 GPIO initialization data.\r
+ */\r
+typedef struct {\r
+#if STM32_HAS_GPIOA || defined(__DOXYGEN__)\r
+  gpio_setup_t          PAData;\r
+#endif\r
+#if STM32_HAS_GPIOB || defined(__DOXYGEN__)\r
+  gpio_setup_t          PBData;\r
+#endif\r
+#if STM32_HAS_GPIOC || defined(__DOXYGEN__)\r
+  gpio_setup_t          PCData;\r
+#endif\r
+#if STM32_HAS_GPIOD || defined(__DOXYGEN__)\r
+  gpio_setup_t          PDData;\r
+#endif\r
+#if STM32_HAS_GPIOE || defined(__DOXYGEN__)\r
+  gpio_setup_t          PEData;\r
+#endif\r
+#if STM32_HAS_GPIOF || defined(__DOXYGEN__)\r
+  gpio_setup_t          PFData;\r
+#endif\r
+#if STM32_HAS_GPIOG || defined(__DOXYGEN__)\r
+  gpio_setup_t          PGData;\r
+#endif\r
+#if STM32_HAS_GPIOH || defined(__DOXYGEN__)\r
+  gpio_setup_t          PHData;\r
+#endif\r
+#if STM32_HAS_GPIOI || defined(__DOXYGEN__)\r
+  gpio_setup_t          PIData;\r
+#endif\r
+#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)\r
+  gpio_setup_t          PJData;\r
+#endif\r
+#if STM32_HAS_GPIOK || defined(__DOXYGEN__)\r
+  gpio_setup_t          PKData;\r
+#endif\r
+} gpio_config_t;\r
+\r
+/**\r
+ * @brief   STM32 GPIO static initialization data.\r
+ */\r
+static const gpio_config_t gpio_default_config = {\r
+#if STM32_HAS_GPIOA\r
+  {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,\r
+   VAL_GPIOA_ODR,   VAL_GPIOA_AFRL,   VAL_GPIOA_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOB\r
+  {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,\r
+   VAL_GPIOB_ODR,   VAL_GPIOB_AFRL,   VAL_GPIOB_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOC\r
+  {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,\r
+   VAL_GPIOC_ODR,   VAL_GPIOC_AFRL,   VAL_GPIOC_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOD\r
+  {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,\r
+   VAL_GPIOD_ODR,   VAL_GPIOD_AFRL,   VAL_GPIOD_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOE\r
+  {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,\r
+   VAL_GPIOE_ODR,   VAL_GPIOE_AFRL,   VAL_GPIOE_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOF\r
+  {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,\r
+   VAL_GPIOF_ODR,   VAL_GPIOF_AFRL,   VAL_GPIOF_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOG\r
+  {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,\r
+   VAL_GPIOG_ODR,   VAL_GPIOG_AFRL,   VAL_GPIOG_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOH\r
+  {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,\r
+   VAL_GPIOH_ODR,   VAL_GPIOH_AFRL,   VAL_GPIOH_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOI\r
+  {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,\r
+   VAL_GPIOI_ODR,   VAL_GPIOI_AFRL,   VAL_GPIOI_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOJ\r
+  {VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,\r
+   VAL_GPIOJ_ODR,   VAL_GPIOJ_AFRL,   VAL_GPIOJ_AFRH},\r
+#endif\r
+#if STM32_HAS_GPIOK\r
+  {VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,\r
+   VAL_GPIOK_ODR,   VAL_GPIOK_AFRL,   VAL_GPIOK_AFRH}\r
+#endif\r
+};\r
+\r
+/*===========================================================================*/\r
+/* Driver local functions.                                                   */\r
+/*===========================================================================*/\r
+\r
+static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {\r
+\r
+  gpiop->OTYPER  = config->otyper;\r
+  gpiop->OSPEEDR = config->ospeedr;\r
+  gpiop->PUPDR   = config->pupdr;\r
+  gpiop->ODR     = config->odr;\r
+  gpiop->AFRL    = config->afrl;\r
+  gpiop->AFRH    = config->afrh;\r
+  gpiop->MODER   = config->moder;\r
+}\r
+\r
+static void stm32_gpio_init(void) {\r
+\r
+  /* Enabling GPIO-related clocks, the mask comes from the\r
+     registry header file.*/\r
+  rccResetAHB4(STM32_GPIO_EN_MASK);\r
+  rccEnableAHB4(STM32_GPIO_EN_MASK, true);\r
+\r
+  /* Initializing all the defined GPIO ports.*/\r
+#if STM32_HAS_GPIOA\r
+  gpio_init(GPIOA, &gpio_default_config.PAData);\r
+#endif\r
+#if STM32_HAS_GPIOB\r
+  gpio_init(GPIOB, &gpio_default_config.PBData);\r
+#endif\r
+#if STM32_HAS_GPIOC\r
+  gpio_init(GPIOC, &gpio_default_config.PCData);\r
+#endif\r
+#if STM32_HAS_GPIOD\r
+  gpio_init(GPIOD, &gpio_default_config.PDData);\r
+#endif\r
+#if STM32_HAS_GPIOE\r
+  gpio_init(GPIOE, &gpio_default_config.PEData);\r
+#endif\r
+#if STM32_HAS_GPIOF\r
+  gpio_init(GPIOF, &gpio_default_config.PFData);\r
+#endif\r
+#if STM32_HAS_GPIOG\r
+  gpio_init(GPIOG, &gpio_default_config.PGData);\r
+#endif\r
+#if STM32_HAS_GPIOH\r
+  gpio_init(GPIOH, &gpio_default_config.PHData);\r
+#endif\r
+#if STM32_HAS_GPIOI\r
+  gpio_init(GPIOI, &gpio_default_config.PIData);\r
+#endif\r
+#if STM32_HAS_GPIOJ\r
+  gpio_init(GPIOJ, &gpio_default_config.PJData);\r
+#endif\r
+#if STM32_HAS_GPIOK\r
+  gpio_init(GPIOK, &gpio_default_config.PKData);\r
+#endif\r
+}\r
+\r
+/*===========================================================================*/\r
+/* Driver interrupt handlers.                                                */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver exported functions.                                                */\r
+/*===========================================================================*/\r
+\r
+/**\r
+ * @brief   Early initialization code.\r
+ * @details GPIO ports and system clocks are initialized before everything\r
+ *          else.\r
+ */\r
+void __early_init(void) {\r
+\r
+  stm32_gpio_init();\r
+  stm32_clock_init();\r
+}\r
+\r
+#if HAL_USE_SDC || defined(__DOXYGEN__)\r
+/**\r
+ * @brief   SDC card detection.\r
+ */\r
+bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {\r
+\r
+  (void)sdcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return true;\r
+}\r
+\r
+/**\r
+ * @brief   SDC card write protection detection.\r
+ */\r
+bool sdc_lld_is_write_protected(SDCDriver *sdcp) {\r
+\r
+  (void)sdcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return false;\r
+}\r
+#endif /* HAL_USE_SDC */\r
+\r
+#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)\r
+/**\r
+ * @brief   MMC_SPI card detection.\r
+ */\r
+bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {\r
+\r
+  (void)mmcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return true;\r
+}\r
+\r
+/**\r
+ * @brief   MMC_SPI card write protection detection.\r
+ */\r
+bool mmc_lld_is_write_protected(MMCDriver *mmcp) {\r
+\r
+  (void)mmcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return false;\r
+}\r
+#endif\r
+\r
+/**\r
+ * @brief   Board-specific initialization code.\r
+ * @note    You can add your board-specific code here.\r
+ */\r
+void boardInit(void) {\r
+\r
+}\r
diff --git a/board/board_l4.c b/board/board_l4.c
new file mode 100644 (file)
index 0000000..cd16e43
--- /dev/null
@@ -0,0 +1,281 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * This file has been automatically generated using ChibiStudio board\r
+ * generator plugin. Do not edit manually.\r
+ */\r
+\r
+#include "hal.h"\r
+#include "stm32_gpio.h"\r
+\r
+/*===========================================================================*/\r
+/* Driver local definitions.                                                 */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver exported variables.                                                */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver local variables and types.                                         */\r
+/*===========================================================================*/\r
+\r
+/**\r
+ * @brief   Type of STM32 GPIO port setup.\r
+ */\r
+typedef struct {\r
+  uint32_t              moder;\r
+  uint32_t              otyper;\r
+  uint32_t              ospeedr;\r
+  uint32_t              pupdr;\r
+  uint32_t              odr;\r
+  uint32_t              afrl;\r
+  uint32_t              afrh;\r
+  uint32_t              ascr;\r
+  uint32_t              lockr;\r
+} gpio_setup_t;\r
+\r
+/**\r
+ * @brief   Type of STM32 GPIO initialization data.\r
+ */\r
+typedef struct {\r
+#if STM32_HAS_GPIOA || defined(__DOXYGEN__)\r
+  gpio_setup_t          PAData;\r
+#endif\r
+#if STM32_HAS_GPIOB || defined(__DOXYGEN__)\r
+  gpio_setup_t          PBData;\r
+#endif\r
+#if STM32_HAS_GPIOC || defined(__DOXYGEN__)\r
+  gpio_setup_t          PCData;\r
+#endif\r
+#if STM32_HAS_GPIOD || defined(__DOXYGEN__)\r
+  gpio_setup_t          PDData;\r
+#endif\r
+#if STM32_HAS_GPIOE || defined(__DOXYGEN__)\r
+  gpio_setup_t          PEData;\r
+#endif\r
+#if STM32_HAS_GPIOF || defined(__DOXYGEN__)\r
+  gpio_setup_t          PFData;\r
+#endif\r
+#if STM32_HAS_GPIOG || defined(__DOXYGEN__)\r
+  gpio_setup_t          PGData;\r
+#endif\r
+#if STM32_HAS_GPIOH || defined(__DOXYGEN__)\r
+  gpio_setup_t          PHData;\r
+#endif\r
+#if STM32_HAS_GPIOI || defined(__DOXYGEN__)\r
+  gpio_setup_t          PIData;\r
+#endif\r
+#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)\r
+  gpio_setup_t          PJData;\r
+#endif\r
+#if STM32_HAS_GPIOK || defined(__DOXYGEN__)\r
+  gpio_setup_t          PKData;\r
+#endif\r
+} gpio_config_t;\r
+\r
+/**\r
+ * @brief   STM32 GPIO static initialization data.\r
+ */\r
+static const gpio_config_t gpio_default_config = {\r
+#if STM32_HAS_GPIOA\r
+  {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,\r
+   VAL_GPIOA_ODR,   VAL_GPIOA_AFRL,   VAL_GPIOA_AFRH,    VAL_GPIOA_ASCR,\r
+   VAL_GPIOA_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOB\r
+  {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,\r
+   VAL_GPIOB_ODR,   VAL_GPIOB_AFRL,   VAL_GPIOB_AFRH,    VAL_GPIOB_ASCR,\r
+   VAL_GPIOB_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOC\r
+  {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,\r
+   VAL_GPIOC_ODR,   VAL_GPIOC_AFRL,   VAL_GPIOC_AFRH,    VAL_GPIOC_ASCR,\r
+   VAL_GPIOC_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOD\r
+  {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,\r
+   VAL_GPIOD_ODR,   VAL_GPIOD_AFRL,   VAL_GPIOD_AFRH,    VAL_GPIOD_ASCR,\r
+   VAL_GPIOD_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOE\r
+  {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,\r
+   VAL_GPIOE_ODR,   VAL_GPIOE_AFRL,   VAL_GPIOE_AFRH,    VAL_GPIOE_ASCR,\r
+   VAL_GPIOE_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOF\r
+  {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,\r
+   VAL_GPIOF_ODR,   VAL_GPIOF_AFRL,   VAL_GPIOF_AFRH,    VAL_GPIOF_ASCR,\r
+   VAL_GPIOF_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOG\r
+  {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,\r
+   VAL_GPIOG_ODR,   VAL_GPIOG_AFRL,   VAL_GPIOG_AFRH,    VAL_GPIOG_ASCR,\r
+   VAL_GPIOG_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOH\r
+  {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,\r
+   VAL_GPIOH_ODR,   VAL_GPIOH_AFRL,   VAL_GPIOH_AFRH,    VAL_GPIOH_ASCR,\r
+   VAL_GPIOH_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOI\r
+  {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,\r
+   VAL_GPIOI_ODR,   VAL_GPIOI_AFRL,   VAL_GPIOI_AFRH,    VAL_GPIOI_ASCR,\r
+   VAL_GPIOI_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOJ\r
+  {VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,\r
+   VAL_GPIOJ_ODR,   VAL_GPIOJ_AFRL,   VAL_GPIOJ_AFRH,    VAL_GPIOJ_ASCR,\r
+   VAL_GPIOJ_LOCKR},\r
+#endif\r
+#if STM32_HAS_GPIOK\r
+  {VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,\r
+   VAL_GPIOK_ODR,   VAL_GPIOK_AFRL,   VAL_GPIOK_AFRH,    VAL_GPIOK_ASCR,\r
+   VAL_GPIOK_LOCKR}\r
+#endif\r
+};\r
+\r
+/*===========================================================================*/\r
+/* Driver local functions.                                                   */\r
+/*===========================================================================*/\r
+\r
+static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {\r
+\r
+  gpiop->OTYPER  = config->otyper;\r
+  gpiop->ASCR    = config->ascr;\r
+  gpiop->OSPEEDR = config->ospeedr;\r
+  gpiop->PUPDR   = config->pupdr;\r
+  gpiop->ODR     = config->odr;\r
+  gpiop->AFRL    = config->afrl;\r
+  gpiop->AFRH    = config->afrh;\r
+  gpiop->MODER   = config->moder;\r
+  gpiop->LOCKR   = config->lockr;\r
+}\r
+\r
+static void stm32_gpio_init(void) {\r
+\r
+  /* Enabling GPIO-related clocks, the mask comes from the\r
+     registry header file.*/\r
+  rccResetAHB2(STM32_GPIO_EN_MASK);\r
+  rccEnableAHB2(STM32_GPIO_EN_MASK, true);\r
+\r
+  /* Initializing all the defined GPIO ports.*/\r
+#if STM32_HAS_GPIOA\r
+  gpio_init(GPIOA, &gpio_default_config.PAData);\r
+#endif\r
+#if STM32_HAS_GPIOB\r
+  gpio_init(GPIOB, &gpio_default_config.PBData);\r
+#endif\r
+#if STM32_HAS_GPIOC\r
+  gpio_init(GPIOC, &gpio_default_config.PCData);\r
+#endif\r
+#if STM32_HAS_GPIOD\r
+  gpio_init(GPIOD, &gpio_default_config.PDData);\r
+#endif\r
+#if STM32_HAS_GPIOE\r
+  gpio_init(GPIOE, &gpio_default_config.PEData);\r
+#endif\r
+#if STM32_HAS_GPIOF\r
+  gpio_init(GPIOF, &gpio_default_config.PFData);\r
+#endif\r
+#if STM32_HAS_GPIOG\r
+  gpio_init(GPIOG, &gpio_default_config.PGData);\r
+#endif\r
+#if STM32_HAS_GPIOH\r
+  gpio_init(GPIOH, &gpio_default_config.PHData);\r
+#endif\r
+#if STM32_HAS_GPIOI\r
+  gpio_init(GPIOI, &gpio_default_config.PIData);\r
+#endif\r
+#if STM32_HAS_GPIOJ\r
+  gpio_init(GPIOJ, &gpio_default_config.PJData);\r
+#endif\r
+#if STM32_HAS_GPIOK\r
+  gpio_init(GPIOK, &gpio_default_config.PKData);\r
+#endif\r
+}\r
+\r
+/*===========================================================================*/\r
+/* Driver interrupt handlers.                                                */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver exported functions.                                                */\r
+/*===========================================================================*/\r
+\r
+/**\r
+ * @brief   Early initialization code.\r
+ * @details GPIO ports and system clocks are initialized before everything\r
+ *          else.\r
+ */\r
+void __early_init(void) {\r
+\r
+  stm32_gpio_init();\r
+  stm32_clock_init();\r
+}\r
+\r
+#if HAL_USE_SDC || defined(__DOXYGEN__)\r
+/**\r
+ * @brief   SDC card detection.\r
+ */\r
+bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {\r
+\r
+  (void)sdcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return true;\r
+}\r
+\r
+/**\r
+ * @brief   SDC card write protection detection.\r
+ */\r
+bool sdc_lld_is_write_protected(SDCDriver *sdcp) {\r
+\r
+  (void)sdcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return false;\r
+}\r
+#endif /* HAL_USE_SDC */\r
+\r
+#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)\r
+/**\r
+ * @brief   MMC_SPI card detection.\r
+ */\r
+bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {\r
+\r
+  (void)mmcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return true;\r
+}\r
+\r
+/**\r
+ * @brief   MMC_SPI card write protection detection.\r
+ */\r
+bool mmc_lld_is_write_protected(MMCDriver *mmcp) {\r
+\r
+  (void)mmcp;\r
+  /* CHTODO: Fill the implementation.*/\r
+  return false;\r
+}\r
+#endif\r
+\r
+/**\r
+ * @brief   Board-specific initialization code.\r
+ * @note    You can add your board-specific code here.\r
+ */\r
+void boardInit(void) {\r
+\r
+}\r
diff --git a/board/h7/board.h b/board/h7/board.h
new file mode 100644 (file)
index 0000000..58ba40e
--- /dev/null
@@ -0,0 +1,1642 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2019 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * This file has been automatically generated using ChibiStudio board\r
+ * generator plugin. Do not edit manually.\r
+ */\r
+\r
+#ifndef BOARD_H\r
+#define BOARD_H\r
+\r
+/*===========================================================================*/\r
+/* Driver constants.                                                         */\r
+/*===========================================================================*/\r
+\r
+/*\r
+ * Setup for STMicroelectronics STM32 Nucleo144-H743ZI board.\r
+ */\r
+\r
+/*\r
+ * Board identifier.\r
+ */\r
+#define BOARD_ST_NUCLEO144_H743ZI\r
+#define BOARD_NAME                  "STMicroelectronics STM32 Nucleo144-H743ZI"\r
+\r
+/*\r
+ * Ethernet PHY type.\r
+ */\r
+#define BOARD_PHY_ID                MII_LAN8742A_ID\r
+#define BOARD_PHY_RMII\r
+\r
+/*\r
+ * Board oscillators-related settings.\r
+ */\r
+#if !defined(STM32_LSECLK)\r
+#define STM32_LSECLK                32768U\r
+#endif\r
+\r
+#define STM32_LSEDRV                (3U << 3U)\r
+\r
+#if !defined(STM32_HSECLK)\r
+#define STM32_HSECLK                8000000U\r
+#endif\r
+\r
+#define STM32_HSE_BYPASS\r
+\r
+/*\r
+ * MCU type as defined in the ST header.\r
+ */\r
+#define STM32H723xx\r
+\r
+/*\r
+ * IO pins assignments.\r
+ */\r
+#define GPIOA_PIN0                  0U\r
+#define GPIOA_RMII_REF_CLK          1U\r
+#define GPIOA_RMII_MDIO             2U\r
+#define GPIOA_PIN3                  3U\r
+#define GPIOA_PIN4                  4U\r
+#define GPIOA_PIN5                  5U\r
+#define GPIOA_PIN6                  6U\r
+#define GPIOA_RMII_CRS_DV           7U\r
+#define GPIOA_USB_SOF               8U\r
+#define GPIOA_MCO1                  8U\r
+#define GPIOA_USB_VBUS              9U\r
+#define GPIOA_USB_ID                10U\r
+#define GPIOA_USB_DM                11U\r
+#define GPIOA_USB_DP                12U\r
+#define GPIOA_SWDIO                 13U\r
+#define GPIOA_SWCLK                 14U\r
+#define GPIOA_T_JTDI                15U\r
+\r
+#define GPIOB_LED1                  0U\r
+#define GPIOB_LED_GREEN             0U\r
+#define GPIOB_LED                   0U\r
+#define GPIOB_PIN1                  1U\r
+#define GPIOB_PIN2                  2U\r
+#define GPIOB_SWO                   3U\r
+#define GPIOB_PIN4                  4U\r
+#define GPIOB_PIN5                  5U\r
+#define GPIOB_PIN6                  6U\r
+#define GPIOB_PIN7                  7U\r
+#define GPIOB_PIN8                  8U\r
+#define GPIOB_PIN9                  9U\r
+#define GPIOB_PIN10                 10U\r
+#define GPIOB_PIN11                 11U\r
+#define GPIOB_PIN12                 12U\r
+#define GPIOB_RMII_TXD1             13U\r
+#define GPIOB_LED3                  14U\r
+#define GPIOB_LED_RED               14U\r
+#define GPIOB_PIN15                 15U\r
+\r
+#define GPIOC_PIN0                  0U\r
+#define GPIOC_RMII_MDC              1U\r
+#define GPIOC_PIN2                  2U\r
+#define GPIOC_PIN3                  3U\r
+#define GPIOC_RMII_RXD0             4U\r
+#define GPIOC_RMII_RXD1             5U\r
+#define GPIOC_PIN6                  6U\r
+#define GPIOC_PIN7                  7U\r
+#define GPIOC_PIN8                  8U\r
+#define GPIOC_PIN9                  9U\r
+#define GPIOC_PIN10                 10U\r
+#define GPIOC_PIN11                 11U\r
+#define GPIOC_PIN12                 12U\r
+#define GPIOC_BUTTON                13U\r
+#define GPIOC_OSC32_IN              14U\r
+#define GPIOC_OSC32_OUT             15U\r
+\r
+#define GPIOD_PIN0                  0U\r
+#define GPIOD_PIN1                  1U\r
+#define GPIOD_PIN2                  2U\r
+#define GPIOD_PIN3                  3U\r
+#define GPIOD_PIN4                  4U\r
+#define GPIOD_PIN5                  5U\r
+#define GPIOD_PIN6                  6U\r
+#define GPIOD_PIN7                  7U\r
+#define GPIOD_USART3_RX             8U\r
+#define GPIOD_STLK_RX               8U\r
+#define GPIOD_USART3_TX             9U\r
+#define GPIOD_STLK_TX               9U\r
+#define GPIOD_PIN10                 10U\r
+#define GPIOD_PIN11                 11U\r
+#define GPIOD_PIN12                 12U\r
+#define GPIOD_PIN13                 13U\r
+#define GPIOD_PIN14                 14U\r
+#define GPIOD_PIN15                 15U\r
+\r
+#define GPIOE_PIN0                  0U\r
+#define GPIOE_LED2                  1U\r
+#define GPIOE_LED_YELLOW            1U\r
+#define GPIOE_PIN2                  2U\r
+#define GPIOE_PIN3                  3U\r
+#define GPIOE_PIN4                  4U\r
+#define GPIOE_PIN5                  5U\r
+#define GPIOE_PIN6                  6U\r
+#define GPIOE_PIN7                  7U\r
+#define GPIOE_PIN8                  8U\r
+#define GPIOE_PIN9                  9U\r
+#define GPIOE_PIN10                 10U\r
+#define GPIOE_PIN11                 11U\r
+#define GPIOE_PIN12                 12U\r
+#define GPIOE_PIN13                 13U\r
+#define GPIOE_PIN14                 14U\r
+#define GPIOE_PIN15                 15U\r
+\r
+#define GPIOF_PIN0                  0U\r
+#define GPIOF_PIN1                  1U\r
+#define GPIOF_PIN2                  2U\r
+#define GPIOF_PIN3                  3U\r
+#define GPIOF_PIN4                  4U\r
+#define GPIOF_PIN5                  5U\r
+#define GPIOF_PIN6                  6U\r
+#define GPIOF_PIN7                  7U\r
+#define GPIOF_PIN8                  8U\r
+#define GPIOF_PIN9                  9U\r
+#define GPIOF_PIN10                 10U\r
+#define GPIOF_PIN11                 11U\r
+#define GPIOF_PIN12                 12U\r
+#define GPIOF_PIN13                 13U\r
+#define GPIOF_PIN14                 14U\r
+#define GPIOF_PIN15                 15U\r
+\r
+#define GPIOG_PIN0                  0U\r
+#define GPIOG_PIN1                  1U\r
+#define GPIOG_PIN2                  2U\r
+#define GPIOG_PIN3                  3U\r
+#define GPIOG_PIN4                  4U\r
+#define GPIOG_PIN5                  5U\r
+#define GPIOG_USB_FS_PWR_EN         6U\r
+#define GPIOG_USB_FS_OVCR           7U\r
+#define GPIOG_PIN8                  8U\r
+#define GPIOG_PIN9                  9U\r
+#define GPIOG_PIN10                 10U\r
+#define GPIOG_RMII_TX_EN            11U\r
+#define GPIOG_PIN12                 12U\r
+#define GPIOG_RMII_TXD0             13U\r
+#define GPIOG_PIN14                 14U\r
+#define GPIOG_PIN15                 15U\r
+\r
+#define GPIOH_OSC_IN                0U\r
+#define GPIOH_OSC_OUT               1U\r
+#define GPIOH_PIN2                  2U\r
+#define GPIOH_PIN3                  3U\r
+#define GPIOH_PIN4                  4U\r
+#define GPIOH_PIN5                  5U\r
+#define GPIOH_PIN6                  6U\r
+#define GPIOH_PIN7                  7U\r
+#define GPIOH_PIN8                  8U\r
+#define GPIOH_PIN9                  9U\r
+#define GPIOH_PIN10                 10U\r
+#define GPIOH_PIN11                 11U\r
+#define GPIOH_PIN12                 12U\r
+#define GPIOH_PIN13                 13U\r
+#define GPIOH_PIN14                 14U\r
+#define GPIOH_PIN15                 15U\r
+\r
+#define GPIOI_PIN0                  0U\r
+#define GPIOI_PIN1                  1U\r
+#define GPIOI_PIN2                  2U\r
+#define GPIOI_PIN3                  3U\r
+#define GPIOI_PIN4                  4U\r
+#define GPIOI_PIN5                  5U\r
+#define GPIOI_PIN6                  6U\r
+#define GPIOI_PIN7                  7U\r
+#define GPIOI_PIN8                  8U\r
+#define GPIOI_PIN9                  9U\r
+#define GPIOI_PIN10                 10U\r
+#define GPIOI_PIN11                 11U\r
+#define GPIOI_PIN12                 12U\r
+#define GPIOI_PIN13                 13U\r
+#define GPIOI_PIN14                 14U\r
+#define GPIOI_PIN15                 15U\r
+\r
+#define GPIOJ_PIN0                  0U\r
+#define GPIOJ_PIN1                  1U\r
+#define GPIOJ_PIN2                  2U\r
+#define GPIOJ_PIN3                  3U\r
+#define GPIOJ_PIN4                  4U\r
+#define GPIOJ_PIN5                  5U\r
+#define GPIOJ_PIN6                  6U\r
+#define GPIOJ_PIN7                  7U\r
+#define GPIOJ_PIN8                  8U\r
+#define GPIOJ_PIN9                  9U\r
+#define GPIOJ_PIN10                 10U\r
+#define GPIOJ_PIN11                 11U\r
+#define GPIOJ_PIN12                 12U\r
+#define GPIOJ_PIN13                 13U\r
+#define GPIOJ_PIN14                 14U\r
+#define GPIOJ_PIN15                 15U\r
+\r
+#define GPIOK_PIN0                  0U\r
+#define GPIOK_PIN1                  1U\r
+#define GPIOK_PIN2                  2U\r
+#define GPIOK_PIN3                  3U\r
+#define GPIOK_PIN4                  4U\r
+#define GPIOK_PIN5                  5U\r
+#define GPIOK_PIN6                  6U\r
+#define GPIOK_PIN7                  7U\r
+#define GPIOK_PIN8                  8U\r
+#define GPIOK_PIN9                  9U\r
+#define GPIOK_PIN10                 10U\r
+#define GPIOK_PIN11                 11U\r
+#define GPIOK_PIN12                 12U\r
+#define GPIOK_PIN13                 13U\r
+#define GPIOK_PIN14                 14U\r
+#define GPIOK_PIN15                 15U\r
+\r
+/*\r
+ * IO lines assignments.\r
+ */\r
+#define LINE_RMII_REF_CLK           PAL_LINE(GPIOA, 1U)\r
+#define LINE_RMII_MDIO              PAL_LINE(GPIOA, 2U)\r
+#define LINE_RMII_CRS_DV            PAL_LINE(GPIOA, 7U)\r
+#define LINE_USB_SOF                PAL_LINE(GPIOA, 8U)\r
+#define LINE_MCO1                   PAL_LINE(GPIOA, 8U)\r
+#define LINE_USB_VBUS               PAL_LINE(GPIOA, 9U)\r
+#define LINE_USB_ID                 PAL_LINE(GPIOA, 10U)\r
+#define LINE_USB_DM                 PAL_LINE(GPIOA, 11U)\r
+#define LINE_USB_DP                 PAL_LINE(GPIOA, 12U)\r
+#define LINE_SWDIO                  PAL_LINE(GPIOA, 13U)\r
+#define LINE_SWCLK                  PAL_LINE(GPIOA, 14U)\r
+#define LINE_T_JTDI                 PAL_LINE(GPIOA, 15U)\r
+#define LINE_LED1                   PAL_LINE(GPIOB, 0U)\r
+#define LINE_LED_GREEN              PAL_LINE(GPIOB, 0U)\r
+#define LINE_LED                    PAL_LINE(GPIOB, 0U)\r
+#define LINE_SWO                    PAL_LINE(GPIOB, 3U)\r
+#define LINE_LED2                   PAL_LINE(GPIOE, 1U)\r
+#define LINE_LED_YELLOW             PAL_LINE(GPIOE, 1U)\r
+#define LINE_RMII_TXD1              PAL_LINE(GPIOB, 13U)\r
+#define LINE_LED3                   PAL_LINE(GPIOB, 14U)\r
+#define LINE_LED_RED                PAL_LINE(GPIOB, 14U)\r
+#define LINE_RMII_MDC               PAL_LINE(GPIOC, 1U)\r
+#define LINE_RMII_RXD0              PAL_LINE(GPIOC, 4U)\r
+#define LINE_RMII_RXD1              PAL_LINE(GPIOC, 5U)\r
+#define LINE_BUTTON                 PAL_LINE(GPIOC, 13U)\r
+#define LINE_OSC32_IN               PAL_LINE(GPIOC, 14U)\r
+#define LINE_OSC32_OUT              PAL_LINE(GPIOC, 15U)\r
+#define LINE_USART3_RX              PAL_LINE(GPIOD, 8U)\r
+#define LINE_STLK_RX                PAL_LINE(GPIOD, 8U)\r
+#define LINE_USART3_TX              PAL_LINE(GPIOD, 9U)\r
+#define LINE_STLK_TX                PAL_LINE(GPIOD, 9U)\r
+#define LINE_USB_FS_PWR_EN          PAL_LINE(GPIOG, 6U)\r
+#define LINE_USB_FS_OVCR            PAL_LINE(GPIOG, 7U)\r
+#define LINE_RMII_TX_EN             PAL_LINE(GPIOG, 11U)\r
+#define LINE_RMII_TXD0              PAL_LINE(GPIOG, 13U)\r
+#define LINE_OSC_IN                 PAL_LINE(GPIOH, 0U)\r
+#define LINE_OSC_OUT                PAL_LINE(GPIOH, 1U)\r
+\r
+/*===========================================================================*/\r
+/* Driver pre-compile time settings.                                         */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Derived constants and error checks.                                       */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver data structures and types.                                         */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver macros.                                                            */\r
+/*===========================================================================*/\r
+\r
+/*\r
+ * I/O ports initial setup, this configuration is established soon after reset\r
+ * in the initialization code.\r
+ * Please refer to the STM32 Reference Manual for details.\r
+ */\r
+#define PIN_MODE_INPUT(n)           (0U << ((n) * 2U))\r
+#define PIN_MODE_OUTPUT(n)          (1U << ((n) * 2U))\r
+#define PIN_MODE_ALTERNATE(n)       (2U << ((n) * 2U))\r
+#define PIN_MODE_ANALOG(n)          (3U << ((n) * 2U))\r
+#define PIN_ODR_LOW(n)              (0U << (n))\r
+#define PIN_ODR_HIGH(n)             (1U << (n))\r
+#define PIN_OTYPE_PUSHPULL(n)       (0U << (n))\r
+#define PIN_OTYPE_OPENDRAIN(n)      (1U << (n))\r
+#define PIN_OSPEED_VERYLOW(n)       (0U << ((n) * 2U))\r
+#define PIN_OSPEED_LOW(n)           (1U << ((n) * 2U))\r
+#define PIN_OSPEED_MEDIUM(n)        (2U << ((n) * 2U))\r
+#define PIN_OSPEED_HIGH(n)          (3U << ((n) * 2U))\r
+#define PIN_PUPDR_FLOATING(n)       (0U << ((n) * 2U))\r
+#define PIN_PUPDR_PULLUP(n)         (1U << ((n) * 2U))\r
+#define PIN_PUPDR_PULLDOWN(n)       (2U << ((n) * 2U))\r
+#define PIN_AFIO_AF(n, v)           ((v) << (((n) % 8U) * 4U))\r
+\r
+/*\r
+ * GPIOA setup:\r
+ *\r
+ * PA0  - PIN0                      (input pullup).\r
+ * PA1  - RMII_REF_CLK              (alternate 11).\r
+ * PA2  - RMII_MDIO                 (alternate 11).\r
+ * PA3  - PIN3                      (input pullup).\r
+ * PA4  - PIN4                      (input pullup).\r
+ * PA5  - PIN5                      (input pullup).\r
+ * PA6  - PIN6                      (input pullup).\r
+ * PA7  - RMII_CRS_DV               (alternate 11).\r
+ * PA8  - USB_SOF MCO1              (alternate 10).\r
+ * PA9  - USB_VBUS                  (analog).\r
+ * PA10 - USB_ID                    (alternate 10).\r
+ * PA11 - USB_DM                    (alternate 10).\r
+ * PA12 - USB_DP                    (alternate 10).\r
+ * PA13 - SWDIO                     (alternate 0).\r
+ * PA14 - SWCLK                     (alternate 0).\r
+ * PA15 - T_JTDI                    (alternate 0).\r
+ */\r
+#define VAL_GPIOA_MODER             (PIN_MODE_INPUT(GPIOA_PIN0) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_RMII_REF_CLK) |\\r
+                                     PIN_MODE_ALTERNATE(GPIOA_RMII_MDIO) |  \\r
+                                     PIN_MODE_INPUT(GPIOA_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOA_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOA_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOA_PIN6) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_RMII_CRS_DV) |\\r
+                                     PIN_MODE_ALTERNATE(GPIOA_USB_SOF) |    \\r
+                                     PIN_MODE_ANALOG(GPIOA_USB_VBUS) |      \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_USB_ID) |     \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_USB_DM) |     \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_USB_DP) |     \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_SWDIO) |      \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_SWCLK) |      \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_T_JTDI))\r
+#define VAL_GPIOA_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_REF_CLK) |\\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_MDIO) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_RMII_CRS_DV) |\\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_SOF) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_VBUS) |   \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_ID) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_T_JTDI))\r
+#define VAL_GPIOA_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOA_PIN0) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_RMII_REF_CLK) |  \\r
+                                     PIN_OSPEED_HIGH(GPIOA_RMII_MDIO) |     \\r
+                                     PIN_OSPEED_VERYLOW(GPIOA_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOA_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOA_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOA_PIN6) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_RMII_CRS_DV) |   \\r
+                                     PIN_OSPEED_HIGH(GPIOA_USB_SOF) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_USB_VBUS) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOA_USB_ID) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_USB_DM) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_USB_DP) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_SWDIO) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_SWCLK) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_T_JTDI))\r
+#define VAL_GPIOA_PUPDR             (PIN_PUPDR_PULLUP(GPIOA_PIN0) |         \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_RMII_REF_CLK) |\\r
+                                     PIN_PUPDR_PULLUP(GPIOA_RMII_MDIO) |    \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_RMII_CRS_DV) |  \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_USB_SOF) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_USB_VBUS) |   \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_USB_ID) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_USB_DM) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_USB_DP) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_SWDIO) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_SWCLK) |      \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_T_JTDI))\r
+#define VAL_GPIOA_ODR               (PIN_ODR_HIGH(GPIOA_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOA_RMII_REF_CLK) |     \\r
+                                     PIN_ODR_HIGH(GPIOA_RMII_MDIO) |        \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOA_RMII_CRS_DV) |      \\r
+                                     PIN_ODR_HIGH(GPIOA_USB_SOF) |          \\r
+                                     PIN_ODR_HIGH(GPIOA_USB_VBUS) |         \\r
+                                     PIN_ODR_HIGH(GPIOA_USB_ID) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_USB_DM) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_USB_DP) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_SWDIO) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_SWCLK) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_T_JTDI))\r
+#define VAL_GPIOA_AFRL              (PIN_AFIO_AF(GPIOA_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOA_RMII_REF_CLK, 11U) | \\r
+                                     PIN_AFIO_AF(GPIOA_RMII_MDIO, 11U) |    \\r
+                                     PIN_AFIO_AF(GPIOA_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOA_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOA_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOA_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOA_RMII_CRS_DV, 11U))\r
+#define VAL_GPIOA_AFRH              (PIN_AFIO_AF(GPIOA_USB_SOF, 10U) |      \\r
+                                     PIN_AFIO_AF(GPIOA_USB_VBUS, 0U) |      \\r
+                                     PIN_AFIO_AF(GPIOA_USB_ID, 10U) |       \\r
+                                     PIN_AFIO_AF(GPIOA_USB_DM, 10U) |       \\r
+                                     PIN_AFIO_AF(GPIOA_USB_DP, 10U) |       \\r
+                                     PIN_AFIO_AF(GPIOA_SWDIO, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_SWCLK, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_T_JTDI, 0U))\r
+\r
+/*\r
+ * GPIOB setup:\r
+ *\r
+ * PB0  - LED1 LED_GREEN LED        (output pushpull maximum).\r
+ * PB1  - PIN1                      (input pullup).\r
+ * PB2  - PIN2                      (input pullup).\r
+ * PB3  - SWO                       (alternate 0).\r
+ * PB4  - PIN4                      (input pullup).\r
+ * PB5  - PIN5                      (input pullup).\r
+ * PB6  - PIN6                      (input pullup).\r
+ * PB7  - PIN7                      (input pullup).\r
+ * PB8  - PIN8                      (input pullup).\r
+ * PB9  - PIN9                      (input pullup).\r
+ * PB10 - PIN10                     (input pullup).\r
+ * PB11 - PIN11                     (input pullup).\r
+ * PB12 - PIN12                     (input pullup).\r
+ * PB13 - RMII_TXD1                 (alternate 11).\r
+ * PB14 - LED3 LED_RED              (output pushpull maximum).\r
+ * PB15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOB_MODER             (PIN_MODE_OUTPUT(GPIOB_LED1) |          \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN2) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOB_SWO) |        \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN12) |          \\r
+                                     PIN_MODE_ALTERNATE(GPIOB_RMII_TXD1) |  \\r
+                                     PIN_MODE_OUTPUT(GPIOB_LED3) |          \\r
+                                     PIN_MODE_INPUT(GPIOB_PIN15))\r
+#define VAL_GPIOB_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOB_LED1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_SWO) |        \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_RMII_TXD1) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_LED3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN15))\r
+#define VAL_GPIOB_OSPEEDR           (PIN_OSPEED_HIGH(GPIOB_LED1) |          \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN2) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOB_SWO) |           \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN12) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOB_RMII_TXD1) |     \\r
+                                     PIN_OSPEED_HIGH(GPIOB_LED3) |          \\r
+                                     PIN_OSPEED_VERYLOW(GPIOB_PIN15))\r
+#define VAL_GPIOB_PUPDR             (PIN_PUPDR_FLOATING(GPIOB_LED1) |       \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_SWO) |          \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN7) |       \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_RMII_TXD1) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_LED3) |       \\r
+                                     PIN_PUPDR_PULLUP(GPIOB_PIN15))\r
+#define VAL_GPIOB_ODR               (PIN_ODR_LOW(GPIOB_LED1) |              \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_SWO) |              \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_RMII_TXD1) |        \\r
+                                     PIN_ODR_LOW(GPIOB_LED3) |              \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN15))\r
+#define VAL_GPIOB_AFRL              (PIN_AFIO_AF(GPIOB_LED1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_SWO, 0U) |           \\r
+                                     PIN_AFIO_AF(GPIOB_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN7, 0U))\r
+#define VAL_GPIOB_AFRH              (PIN_AFIO_AF(GPIOB_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_RMII_TXD1, 11U) |    \\r
+                                     PIN_AFIO_AF(GPIOB_LED3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOC setup:\r
+ *\r
+ * PC0  - PIN0                      (input pullup).\r
+ * PC1  - RMII_MDC                  (alternate 11).\r
+ * PC2  - PIN2                      (input pullup).\r
+ * PC3  - PIN3                      (input pullup).\r
+ * PC4  - RMII_RXD0                 (alternate 11).\r
+ * PC5  - RMII_RXD1                 (alternate 11).\r
+ * PC6  - PIN6                      (input pullup).\r
+ * PC7  - PIN7                      (input pullup).\r
+ * PC8  - PIN8                      (input pullup).\r
+ * PC9  - PIN9                      (input pullup).\r
+ * PC10 - PIN10                     (input pullup).\r
+ * PC11 - PIN11                     (input pullup).\r
+ * PC12 - PIN12                     (input pullup).\r
+ * PC13 - BUTTON                    (input floating).\r
+ * PC14 - OSC32_IN                  (input floating).\r
+ * PC15 - OSC32_OUT                 (input floating).\r
+ */\r
+#define VAL_GPIOC_MODER             (PIN_MODE_INPUT(GPIOC_PIN0) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOC_RMII_MDC) |   \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN3) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOC_RMII_RXD0) |  \\r
+                                     PIN_MODE_ALTERNATE(GPIOC_RMII_RXD1) |  \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOC_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOC_BUTTON) |         \\r
+                                     PIN_MODE_INPUT(GPIOC_OSC32_IN) |       \\r
+                                     PIN_MODE_INPUT(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_MDC) |   \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_RXD0) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_RMII_RXD1) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_BUTTON) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) |   \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOC_PIN0) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOC_RMII_MDC) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN3) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOC_RMII_RXD0) |     \\r
+                                     PIN_OSPEED_HIGH(GPIOC_RMII_RXD1) |     \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_PIN12) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOC_BUTTON) |        \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_OSC32_IN) |   \\r
+                                     PIN_OSPEED_VERYLOW(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_PUPDR             (PIN_PUPDR_PULLUP(GPIOC_PIN0) |         \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_RMII_MDC) |   \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN3) |         \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_RMII_RXD0) |  \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_RMII_RXD1) |  \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOC_PIN12) |        \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_BUTTON) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) |   \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_ODR               (PIN_ODR_HIGH(GPIOC_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_RMII_MDC) |         \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_RMII_RXD0) |        \\r
+                                     PIN_ODR_HIGH(GPIOC_RMII_RXD1) |        \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_BUTTON) |           \\r
+                                     PIN_ODR_HIGH(GPIOC_OSC32_IN) |         \\r
+                                     PIN_ODR_HIGH(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_AFRL              (PIN_AFIO_AF(GPIOC_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_RMII_MDC, 11U) |     \\r
+                                     PIN_AFIO_AF(GPIOC_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_RMII_RXD0, 11U) |    \\r
+                                     PIN_AFIO_AF(GPIOC_RMII_RXD1, 11U) |    \\r
+                                     PIN_AFIO_AF(GPIOC_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN7, 0U))\r
+#define VAL_GPIOC_AFRH              (PIN_AFIO_AF(GPIOC_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_BUTTON, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) |      \\r
+                                     PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))\r
+\r
+/*\r
+ * GPIOD setup:\r
+ *\r
+ * PD0  - PIN0                      (input pullup).\r
+ * PD1  - PIN1                      (input pullup).\r
+ * PD2  - PIN2                      (input pullup).\r
+ * PD3  - PIN3                      (input pullup).\r
+ * PD4  - PIN4                      (input pullup).\r
+ * PD5  - PIN5                      (input pullup).\r
+ * PD6  - PIN6                      (input pullup).\r
+ * PD7  - PIN7                      (input pullup).\r
+ * PD8  - USART3_RX STLK_RX         (alternate 7).\r
+ * PD9  - USART3_TX STLK_TX         (alternate 7).\r
+ * PD10 - PIN10                     (input pullup).\r
+ * PD11 - PIN11                     (input pullup).\r
+ * PD12 - PIN12                     (input pullup).\r
+ * PD13 - PIN13                     (input pullup).\r
+ * PD14 - PIN14                     (input pullup).\r
+ * PD15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOD_MODER             (PIN_MODE_INPUT(GPIOD_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN7) |           \\r
+                                     PIN_MODE_ALTERNATE(GPIOD_USART3_RX) |  \\r
+                                     PIN_MODE_ALTERNATE(GPIOD_USART3_TX) |  \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOD_PIN15))\r
+#define VAL_GPIOD_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_USART3_RX) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_USART3_TX) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN15))\r
+#define VAL_GPIOD_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOD_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN7) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOD_USART3_RX) |     \\r
+                                     PIN_OSPEED_HIGH(GPIOD_USART3_TX) |     \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOD_PIN15))\r
+#define VAL_GPIOD_PUPDR             (PIN_PUPDR_PULLUP(GPIOD_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN7) |         \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_USART3_RX) |  \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_USART3_TX) |  \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOD_PIN15))\r
+#define VAL_GPIOD_ODR               (PIN_ODR_HIGH(GPIOD_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_USART3_RX) |        \\r
+                                     PIN_ODR_HIGH(GPIOD_USART3_TX) |        \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN15))\r
+#define VAL_GPIOD_AFRL              (PIN_AFIO_AF(GPIOD_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN7, 0U))\r
+#define VAL_GPIOD_AFRH              (PIN_AFIO_AF(GPIOD_USART3_RX, 7U) |     \\r
+                                     PIN_AFIO_AF(GPIOD_USART3_TX, 7U) |     \\r
+                                     PIN_AFIO_AF(GPIOD_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOE setup:\r
+ *\r
+ * PE0  - PIN0                      (input pullup).\r
+ * PE1  - PIN1                      (input pullup).\r
+ * PE2  - PIN2                      (input pullup).\r
+ * PE3  - PIN3                      (input pullup).\r
+ * PE4  - PIN4                      (input pullup).\r
+ * PE5  - PIN5                      (input pullup).\r
+ * PE6  - PIN6                      (input pullup).\r
+ * PE7  - PIN7                      (input pullup).\r
+ * PE8  - PIN8                      (input pullup).\r
+ * PE9  - PIN9                      (input pullup).\r
+ * PE10 - PIN10                     (input pullup).\r
+ * PE11 - PIN11                     (input pullup).\r
+ * PE12 - PIN12                     (input pullup).\r
+ * PE13 - PIN13                     (input pullup).\r
+ * PE14 - PIN14                     (input pullup).\r
+ * PE15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOE_MODER             (PIN_MODE_INPUT(GPIOE_PIN0) |           \\r
+                                     PIN_MODE_OUTPUT(GPIOE_LED2) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOE_PIN15))\r
+#define VAL_GPIOE_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_LED2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN15))\r
+#define VAL_GPIOE_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOE_PIN0) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOE_LED2) |          \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOE_PIN15))\r
+#define VAL_GPIOE_PUPDR             (PIN_PUPDR_PULLUP(GPIOE_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_LED2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOE_PIN15))\r
+#define VAL_GPIOE_ODR               (PIN_ODR_HIGH(GPIOE_PIN0) |             \\r
+                                     PIN_ODR_LOW(GPIOE_LED2) |              \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN15))\r
+#define VAL_GPIOE_AFRL              (PIN_AFIO_AF(GPIOE_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_LED2, 0U)) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN7, 0U)\r
+#define VAL_GPIOE_AFRH              (PIN_AFIO_AF(GPIOE_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOF setup:\r
+ *\r
+ * PF0  - PIN0                      (input pullup).\r
+ * PF1  - PIN1                      (input pullup).\r
+ * PF2  - PIN2                      (input pullup).\r
+ * PF3  - PIN3                      (input pullup).\r
+ * PF4  - PIN4                      (input pullup).\r
+ * PF5  - PIN5                      (input pullup).\r
+ * PF6  - PIN6                      (input pullup).\r
+ * PF7  - PIN7                      (input pullup).\r
+ * PF8  - PIN8                      (input pullup).\r
+ * PF9  - PIN9                      (input pullup).\r
+ * PF10 - PIN10                     (input pullup).\r
+ * PF11 - PIN11                     (input pullup).\r
+ * PF12 - PIN12                     (input pullup).\r
+ * PF13 - PIN13                     (input pullup).\r
+ * PF14 - PIN14                     (input pullup).\r
+ * PF15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOF_MODER             (PIN_MODE_INPUT(GPIOF_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOF_PIN15))\r
+#define VAL_GPIOF_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOF_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN15))\r
+#define VAL_GPIOF_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOF_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOF_PIN15))\r
+#define VAL_GPIOF_PUPDR             (PIN_PUPDR_PULLUP(GPIOF_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOF_PIN15))\r
+#define VAL_GPIOF_ODR               (PIN_ODR_HIGH(GPIOF_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN15))\r
+#define VAL_GPIOF_AFRL              (PIN_AFIO_AF(GPIOF_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN7, 0U))\r
+#define VAL_GPIOF_AFRH              (PIN_AFIO_AF(GPIOF_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOG setup:\r
+ *\r
+ * PG0  - PIN0                      (input pullup).\r
+ * PG1  - PIN1                      (input pullup).\r
+ * PG2  - PIN2                      (input pullup).\r
+ * PG3  - PIN3                      (input pullup).\r
+ * PG4  - PIN4                      (input pullup).\r
+ * PG5  - PIN5                      (input pullup).\r
+ * PG6  - USB_FS_PWR_EN             (output pushpull minimum).\r
+ * PG7  - USB_FS_OVCR               (input floating).\r
+ * PG8  - PIN8                      (input pullup).\r
+ * PG9  - PIN9                      (input pullup).\r
+ * PG10 - PIN10                     (input pullup).\r
+ * PG11 - RMII_TX_EN                (alternate 11).\r
+ * PG12 - PIN12                     (input pullup).\r
+ * PG13 - RMII_TXD0                 (alternate 11).\r
+ * PG14 - PIN14                     (input pullup).\r
+ * PG15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOG_MODER             (PIN_MODE_INPUT(GPIOG_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN5) |           \\r
+                                     PIN_MODE_OUTPUT(GPIOG_USB_FS_PWR_EN) | \\r
+                                     PIN_MODE_INPUT(GPIOG_USB_FS_OVCR) |    \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN10) |          \\r
+                                     PIN_MODE_ALTERNATE(GPIOG_RMII_TX_EN) | \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN12) |          \\r
+                                     PIN_MODE_ALTERNATE(GPIOG_RMII_TXD0) |  \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOG_PIN15))\r
+#define VAL_GPIOG_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOG_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_USB_FS_PWR_EN) |\\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_USB_FS_OVCR) |\\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_RMII_TX_EN) | \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_RMII_TXD0) |  \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN15))\r
+#define VAL_GPIOG_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOG_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_USB_FS_PWR_EN) |\\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_USB_FS_OVCR) |\\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN10) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOG_RMII_TX_EN) |    \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN12) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOG_RMII_TXD0) |     \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN15))\r
+#define VAL_GPIOG_PUPDR             (PIN_PUPDR_PULLUP(GPIOG_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN5) |         \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_USB_FS_PWR_EN) |\\r
+                                     PIN_PUPDR_FLOATING(GPIOG_USB_FS_OVCR) |\\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN10) |        \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_RMII_TX_EN) | \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN12) |        \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_RMII_TXD0) |  \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOG_PIN15))\r
+#define VAL_GPIOG_ODR               (PIN_ODR_HIGH(GPIOG_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN5) |             \\r
+                                     PIN_ODR_LOW(GPIOG_USB_FS_PWR_EN) |     \\r
+                                     PIN_ODR_HIGH(GPIOG_USB_FS_OVCR) |      \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_RMII_TX_EN) |       \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_RMII_TXD0) |        \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN15))\r
+#define VAL_GPIOG_AFRL              (PIN_AFIO_AF(GPIOG_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_USB_FS_PWR_EN, 0U) | \\r
+                                     PIN_AFIO_AF(GPIOG_USB_FS_OVCR, 0U))\r
+#define VAL_GPIOG_AFRH              (PIN_AFIO_AF(GPIOG_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_RMII_TX_EN, 11U) |   \\r
+                                     PIN_AFIO_AF(GPIOG_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_RMII_TXD0, 11U) |    \\r
+                                     PIN_AFIO_AF(GPIOG_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOH setup:\r
+ *\r
+ * PH0  - OSC_IN                    (input floating).\r
+ * PH1  - OSC_OUT                   (input floating).\r
+ * PH2  - PIN2                      (input pullup).\r
+ * PH3  - PIN3                      (input pullup).\r
+ * PH4  - PIN4                      (input pullup).\r
+ * PH5  - PIN5                      (input pullup).\r
+ * PH6  - PIN6                      (input pullup).\r
+ * PH7  - PIN7                      (input pullup).\r
+ * PH8  - PIN8                      (input pullup).\r
+ * PH9  - PIN9                      (input pullup).\r
+ * PH10 - PIN10                     (input pullup).\r
+ * PH11 - PIN11                     (input pullup).\r
+ * PH12 - PIN12                     (input pullup).\r
+ * PH13 - PIN13                     (input pullup).\r
+ * PH14 - PIN14                     (input pullup).\r
+ * PH15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOH_MODER             (PIN_MODE_INPUT(GPIOH_OSC_IN) |         \\r
+                                     PIN_MODE_INPUT(GPIOH_OSC_OUT) |        \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOH_PIN15))\r
+#define VAL_GPIOH_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOH_OSC_IN) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_OSC_OUT) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN15))\r
+#define VAL_GPIOH_OSPEEDR           (PIN_OSPEED_HIGH(GPIOH_OSC_IN) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOH_OSC_OUT) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN15))\r
+#define VAL_GPIOH_PUPDR             (PIN_PUPDR_FLOATING(GPIOH_OSC_IN) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_OSC_OUT) |    \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOH_PIN15))\r
+#define VAL_GPIOH_ODR               (PIN_ODR_HIGH(GPIOH_OSC_IN) |           \\r
+                                     PIN_ODR_HIGH(GPIOH_OSC_OUT) |          \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN15))\r
+#define VAL_GPIOH_AFRL              (PIN_AFIO_AF(GPIOH_OSC_IN, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOH_OSC_OUT, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOH_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN7, 0U))\r
+#define VAL_GPIOH_AFRH              (PIN_AFIO_AF(GPIOH_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOI setup:\r
+ *\r
+ * PI0  - PIN0                      (input pullup).\r
+ * PI1  - PIN1                      (input pullup).\r
+ * PI2  - PIN2                      (input pullup).\r
+ * PI3  - PIN3                      (input pullup).\r
+ * PI4  - PIN4                      (input pullup).\r
+ * PI5  - PIN5                      (input pullup).\r
+ * PI6  - PIN6                      (input pullup).\r
+ * PI7  - PIN7                      (input pullup).\r
+ * PI8  - PIN8                      (input pullup).\r
+ * PI9  - PIN9                      (input pullup).\r
+ * PI10 - PIN10                     (input pullup).\r
+ * PI11 - PIN11                     (input pullup).\r
+ * PI12 - PIN12                     (input pullup).\r
+ * PI13 - PIN13                     (input pullup).\r
+ * PI14 - PIN14                     (input pullup).\r
+ * PI15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOI_MODER             (PIN_MODE_INPUT(GPIOI_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOI_PIN15))\r
+#define VAL_GPIOI_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOI_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOI_PIN15))\r
+#define VAL_GPIOI_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOI_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOI_PIN15))\r
+#define VAL_GPIOI_PUPDR             (PIN_PUPDR_PULLUP(GPIOI_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOI_PIN15))\r
+#define VAL_GPIOI_ODR               (PIN_ODR_HIGH(GPIOI_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOI_PIN15))\r
+#define VAL_GPIOI_AFRL              (PIN_AFIO_AF(GPIOI_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN7, 0U))\r
+#define VAL_GPIOI_AFRH              (PIN_AFIO_AF(GPIOI_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOI_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOI_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOI_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOI_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOI_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOI_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOJ setup:\r
+ *\r
+ * PJ0  - PIN0                      (input pullup).\r
+ * PJ1  - PIN1                      (input pullup).\r
+ * PJ2  - PIN2                      (input pullup).\r
+ * PJ3  - PIN3                      (input pullup).\r
+ * PJ4  - PIN4                      (input pullup).\r
+ * PJ5  - PIN5                      (input pullup).\r
+ * PJ6  - PIN6                      (input pullup).\r
+ * PJ7  - PIN7                      (input pullup).\r
+ * PJ8  - PIN8                      (input pullup).\r
+ * PJ9  - PIN9                      (input pullup).\r
+ * PJ10 - PIN10                     (input pullup).\r
+ * PJ11 - PIN11                     (input pullup).\r
+ * PJ12 - PIN12                     (input pullup).\r
+ * PJ13 - PIN13                     (input pullup).\r
+ * PJ14 - PIN14                     (input pullup).\r
+ * PJ15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOJ_MODER             (PIN_MODE_INPUT(GPIOJ_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOJ_PIN15))\r
+#define VAL_GPIOJ_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOJ_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOJ_PIN15))\r
+#define VAL_GPIOJ_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOJ_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOJ_PIN15))\r
+#define VAL_GPIOJ_PUPDR             (PIN_PUPDR_PULLUP(GPIOJ_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOJ_PIN15))\r
+#define VAL_GPIOJ_ODR               (PIN_ODR_HIGH(GPIOJ_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOJ_PIN15))\r
+#define VAL_GPIOJ_AFRL              (PIN_AFIO_AF(GPIOJ_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN7, 0U))\r
+#define VAL_GPIOJ_AFRH              (PIN_AFIO_AF(GPIOJ_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOJ_PIN15, 0U))\r
+\r
+/*\r
+ * GPIOK setup:\r
+ *\r
+ * PK0  - PIN0                      (input pullup).\r
+ * PK1  - PIN1                      (input pullup).\r
+ * PK2  - PIN2                      (input pullup).\r
+ * PK3  - PIN3                      (input pullup).\r
+ * PK4  - PIN4                      (input pullup).\r
+ * PK5  - PIN5                      (input pullup).\r
+ * PK6  - PIN6                      (input pullup).\r
+ * PK7  - PIN7                      (input pullup).\r
+ * PK8  - PIN8                      (input pullup).\r
+ * PK9  - PIN9                      (input pullup).\r
+ * PK10 - PIN10                     (input pullup).\r
+ * PK11 - PIN11                     (input pullup).\r
+ * PK12 - PIN12                     (input pullup).\r
+ * PK13 - PIN13                     (input pullup).\r
+ * PK14 - PIN14                     (input pullup).\r
+ * PK15 - PIN15                     (input pullup).\r
+ */\r
+#define VAL_GPIOK_MODER             (PIN_MODE_INPUT(GPIOK_PIN0) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN1) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN2) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN3) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN4) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN5) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN6) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN7) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN8) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN9) |           \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN10) |          \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN11) |          \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN12) |          \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN13) |          \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN14) |          \\r
+                                     PIN_MODE_INPUT(GPIOK_PIN15))\r
+#define VAL_GPIOK_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOK_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOK_PIN15))\r
+#define VAL_GPIOK_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOK_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOK_PIN15))\r
+#define VAL_GPIOK_PUPDR             (PIN_PUPDR_PULLUP(GPIOK_PIN0) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN1) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN2) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN3) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN4) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN5) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN6) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN7) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN8) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN9) |         \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN10) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN11) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN12) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN13) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN14) |        \\r
+                                     PIN_PUPDR_PULLUP(GPIOK_PIN15))\r
+#define VAL_GPIOK_ODR               (PIN_ODR_HIGH(GPIOK_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOK_PIN15))\r
+#define VAL_GPIOK_AFRL              (PIN_AFIO_AF(GPIOK_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN7, 0U))\r
+#define VAL_GPIOK_AFRH              (PIN_AFIO_AF(GPIOK_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOK_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOK_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOK_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOK_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOK_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOK_PIN15, 0U))\r
+\r
+/*===========================================================================*/\r
+/* External declarations.                                                    */\r
+/*===========================================================================*/\r
+\r
+#if !defined(_FROM_ASM_)\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+  void boardInit(void);\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif /* _FROM_ASM_ */\r
+\r
+#endif /* BOARD_H */\r
diff --git a/board/l4/board.h b/board/l4/board.h
new file mode 100644 (file)
index 0000000..ff42cd1
--- /dev/null
@@ -0,0 +1,1505 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * This file has been automatically generated using ChibiStudio board\r
+ * generator plugin. Do not edit manually.\r
+ */\r
+\r
+#ifndef BOARD_H\r
+#define BOARD_H\r
+\r
+/*===========================================================================*/\r
+/* Driver constants.                                                         */\r
+/*===========================================================================*/\r
+\r
+/*\r
+ * Setup for STMicroelectronics STM32 Nucleo64-L476RG board.\r
+ */\r
+\r
+/*\r
+ * Board identifier.\r
+ */\r
+#define BOARD_ST_NUCLEO64_L476RG\r
+#define BOARD_NAME                  "STMicroelectronics STM32 Nucleo64-L476RG"\r
+\r
+/*\r
+ * Board oscillators-related settings.\r
+ */\r
+#if !defined(STM32_LSECLK)\r
+#define STM32_LSECLK                32768U\r
+#endif\r
+\r
+#define STM32_LSEDRV                (3U << 3U)\r
+\r
+#if !defined(STM32_HSECLK)\r
+#define STM32_HSECLK                8000000U\r
+#endif\r
+\r
+#define STM32_HSE_BYPASS\r
+\r
+/*\r
+ * Board voltages.\r
+ * Required for performance limits calculation.\r
+ */\r
+#define STM32_VDD                   300U\r
+\r
+/*\r
+ * MCU type as defined in the ST header.\r
+ */\r
+#define STM32L476xx\r
+\r
+/*\r
+ * IO pins assignments.\r
+ */\r
+#define GPIOA_ARD_A0                0U\r
+#define GPIOA_ACD12_IN5             0U\r
+#define GPIOA_ARD_A1                1U\r
+#define GPIOA_ACD12_IN6             1U\r
+#define GPIOA_ARD_D1                2U\r
+#define GPIOA_USART2_TX             2U\r
+#define GPIOA_ARD_D0                3U\r
+#define GPIOA_USART2_RX             3U\r
+#define GPIOA_ARD_A2                4U\r
+#define GPIOA_ACD12_IN9             4U\r
+#define GPIOA_ARD_D13               5U\r
+#define GPIOA_LED_GREEN             5U\r
+#define GPIOA_ARD_D12               6U\r
+#define GPIOA_ARD_D11               7U\r
+#define GPIOA_ARD_D7                8U\r
+#define GPIOA_ARD_D8                9U\r
+#define GPIOA_ARD_D2                10U\r
+#define GPIOA_PIN11                 11U\r
+#define GPIOA_PIN12                 12U\r
+#define GPIOA_SWDIO                 13U\r
+#define GPIOA_SWCLK                 14U\r
+#define GPIOA_PIN15                 15U\r
+\r
+#define GPIOB_ARD_A3                0U\r
+#define GPIOB_ACD12_IN15            0U\r
+#define GPIOB_PIN1                  1U\r
+#define GPIOB_PIN2                  2U\r
+#define GPIOB_ARD_D3                3U\r
+#define GPIOB_SWO                   3U\r
+#define GPIOB_ARD_D5                4U\r
+#define GPIOB_ARD_D4                5U\r
+#define GPIOB_ARD_D10               6U\r
+#define GPIOB_PIN7                  7U\r
+#define GPIOB_ARD_D15               8U\r
+#define GPIOB_ARD_D14               9U\r
+#define GPIOB_ARD_D6                10U\r
+#define GPIOB_PIN11                 11U\r
+#define GPIOB_PIN12                 12U\r
+#define GPIOB_PIN13                 13U\r
+#define GPIOB_PIN14                 14U\r
+#define GPIOB_PIN15                 15U\r
+\r
+#define GPIOC_ARD_A5                0U\r
+#define GPIOC_ACD123_IN1            0U\r
+#define GPIOC_ARD_A4                1U\r
+#define GPIOC_ACD123_IN2            1U\r
+#define GPIOC_PIN2                  2U\r
+#define GPIOC_PIN3                  3U\r
+#define GPIOC_PIN4                  4U\r
+#define GPIOC_PIN5                  5U\r
+#define GPIOC_PIN6                  6U\r
+#define GPIOC_ARD_D9                7U\r
+#define GPIOC_PIN8                  8U\r
+#define GPIOC_PIN9                  9U\r
+#define GPIOC_PIN10                 10U\r
+#define GPIOC_PIN11                 11U\r
+#define GPIOC_PIN12                 12U\r
+#define GPIOC_BUTTON                13U\r
+#define GPIOC_OSC32_IN              14U\r
+#define GPIOC_OSC32_OUT             15U\r
+\r
+#define GPIOD_PIN0                  0U\r
+#define GPIOD_PIN1                  1U\r
+#define GPIOD_PIN2                  2U\r
+#define GPIOD_PIN3                  3U\r
+#define GPIOD_PIN4                  4U\r
+#define GPIOD_PIN5                  5U\r
+#define GPIOD_PIN6                  6U\r
+#define GPIOD_PIN7                  7U\r
+#define GPIOD_PIN8                  8U\r
+#define GPIOD_PIN9                  9U\r
+#define GPIOD_PIN10                 10U\r
+#define GPIOD_PIN11                 11U\r
+#define GPIOD_PIN12                 12U\r
+#define GPIOD_PIN13                 13U\r
+#define GPIOD_PIN14                 14U\r
+#define GPIOD_PIN15                 15U\r
+\r
+#define GPIOE_PIN0                  0U\r
+#define GPIOE_PIN1                  1U\r
+#define GPIOE_PIN2                  2U\r
+#define GPIOE_PIN3                  3U\r
+#define GPIOE_PIN4                  4U\r
+#define GPIOE_PIN5                  5U\r
+#define GPIOE_PIN6                  6U\r
+#define GPIOE_PIN7                  7U\r
+#define GPIOE_PIN8                  8U\r
+#define GPIOE_PIN9                  9U\r
+#define GPIOE_PIN10                 10U\r
+#define GPIOE_PIN11                 11U\r
+#define GPIOE_PIN12                 12U\r
+#define GPIOE_PIN13                 13U\r
+#define GPIOE_PIN14                 14U\r
+#define GPIOE_PIN15                 15U\r
+\r
+#define GPIOF_PIN0                  0U\r
+#define GPIOF_PIN1                  1U\r
+#define GPIOF_PIN2                  2U\r
+#define GPIOF_PIN3                  3U\r
+#define GPIOF_PIN4                  4U\r
+#define GPIOF_PIN5                  5U\r
+#define GPIOF_PIN6                  6U\r
+#define GPIOF_PIN7                  7U\r
+#define GPIOF_PIN8                  8U\r
+#define GPIOF_PIN9                  9U\r
+#define GPIOF_PIN10                 10U\r
+#define GPIOF_PIN11                 11U\r
+#define GPIOF_PIN12                 12U\r
+#define GPIOF_PIN13                 13U\r
+#define GPIOF_PIN14                 14U\r
+#define GPIOF_PIN15                 15U\r
+\r
+#define GPIOG_PIN0                  0U\r
+#define GPIOG_PIN1                  1U\r
+#define GPIOG_PIN2                  2U\r
+#define GPIOG_PIN3                  3U\r
+#define GPIOG_PIN4                  4U\r
+#define GPIOG_PIN5                  5U\r
+#define GPIOG_PIN6                  6U\r
+#define GPIOG_PIN7                  7U\r
+#define GPIOG_PIN8                  8U\r
+#define GPIOG_PIN9                  9U\r
+#define GPIOG_PIN10                 10U\r
+#define GPIOG_PIN11                 11U\r
+#define GPIOG_PIN12                 12U\r
+#define GPIOG_PIN13                 13U\r
+#define GPIOG_PIN14                 14U\r
+#define GPIOG_PIN15                 15U\r
+\r
+#define GPIOH_OSC_IN                0U\r
+#define GPIOH_OSC_OUT               1U\r
+#define GPIOH_PIN2                  2U\r
+#define GPIOH_PIN3                  3U\r
+#define GPIOH_PIN4                  4U\r
+#define GPIOH_PIN5                  5U\r
+#define GPIOH_PIN6                  6U\r
+#define GPIOH_PIN7                  7U\r
+#define GPIOH_PIN8                  8U\r
+#define GPIOH_PIN9                  9U\r
+#define GPIOH_PIN10                 10U\r
+#define GPIOH_PIN11                 11U\r
+#define GPIOH_PIN12                 12U\r
+#define GPIOH_PIN13                 13U\r
+#define GPIOH_PIN14                 14U\r
+#define GPIOH_PIN15                 15U\r
+\r
+/*\r
+ * IO lines assignments.\r
+ */\r
+#define LINE_ARD_A0                 PAL_LINE(GPIOA, 0U)\r
+#define LINE_ACD12_IN5              PAL_LINE(GPIOA, 0U)\r
+#define LINE_ARD_A1                 PAL_LINE(GPIOA, 1U)\r
+#define LINE_ACD12_IN6              PAL_LINE(GPIOA, 1U)\r
+#define LINE_ARD_D1                 PAL_LINE(GPIOA, 2U)\r
+#define LINE_USART2_TX              PAL_LINE(GPIOA, 2U)\r
+#define LINE_ARD_D0                 PAL_LINE(GPIOA, 3U)\r
+#define LINE_USART2_RX              PAL_LINE(GPIOA, 3U)\r
+#define LINE_ARD_A2                 PAL_LINE(GPIOA, 4U)\r
+#define LINE_ACD12_IN9              PAL_LINE(GPIOA, 4U)\r
+#define LINE_ARD_D13                PAL_LINE(GPIOA, 5U)\r
+#define LINE_LED_GREEN              PAL_LINE(GPIOA, 5U)\r
+#define LINE_ARD_D12                PAL_LINE(GPIOA, 6U)\r
+#define LINE_ARD_D11                PAL_LINE(GPIOA, 7U)\r
+#define LINE_ARD_D7                 PAL_LINE(GPIOA, 8U)\r
+#define LINE_ARD_D8                 PAL_LINE(GPIOA, 9U)\r
+#define LINE_ARD_D2                 PAL_LINE(GPIOA, 10U)\r
+#define LINE_SWDIO                  PAL_LINE(GPIOA, 13U)\r
+#define LINE_SWCLK                  PAL_LINE(GPIOA, 14U)\r
+#define LINE_ARD_A3                 PAL_LINE(GPIOB, 0U)\r
+#define LINE_ACD12_IN15             PAL_LINE(GPIOB, 0U)\r
+#define LINE_ARD_D3                 PAL_LINE(GPIOB, 3U)\r
+#define LINE_SWO                    PAL_LINE(GPIOB, 3U)\r
+#define LINE_ARD_D5                 PAL_LINE(GPIOB, 4U)\r
+#define LINE_ARD_D4                 PAL_LINE(GPIOB, 5U)\r
+#define LINE_ARD_D10                PAL_LINE(GPIOB, 6U)\r
+#define LINE_ARD_D15                PAL_LINE(GPIOB, 8U)\r
+#define LINE_ARD_D14                PAL_LINE(GPIOB, 9U)\r
+#define LINE_ARD_D6                 PAL_LINE(GPIOB, 10U)\r
+#define LINE_ARD_A5                 PAL_LINE(GPIOC, 0U)\r
+#define LINE_ACD123_IN1             PAL_LINE(GPIOC, 0U)\r
+#define LINE_ARD_A4                 PAL_LINE(GPIOC, 1U)\r
+#define LINE_ACD123_IN2             PAL_LINE(GPIOC, 1U)\r
+#define LINE_ARD_D9                 PAL_LINE(GPIOC, 7U)\r
+#define LINE_BUTTON                 PAL_LINE(GPIOC, 13U)\r
+#define LINE_OSC32_IN               PAL_LINE(GPIOC, 14U)\r
+#define LINE_OSC32_OUT              PAL_LINE(GPIOC, 15U)\r
+#define LINE_OSC_IN                 PAL_LINE(GPIOH, 0U)\r
+#define LINE_OSC_OUT                PAL_LINE(GPIOH, 1U)\r
+\r
+/*===========================================================================*/\r
+/* Driver pre-compile time settings.                                         */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Derived constants and error checks.                                       */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver data structures and types.                                         */\r
+/*===========================================================================*/\r
+\r
+/*===========================================================================*/\r
+/* Driver macros.                                                            */\r
+/*===========================================================================*/\r
+\r
+/*\r
+ * I/O ports initial setup, this configuration is established soon after reset\r
+ * in the initialization code.\r
+ * Please refer to the STM32 Reference Manual for details.\r
+ */\r
+#define PIN_MODE_INPUT(n)           (0U << ((n) * 2U))\r
+#define PIN_MODE_OUTPUT(n)          (1U << ((n) * 2U))\r
+#define PIN_MODE_ALTERNATE(n)       (2U << ((n) * 2U))\r
+#define PIN_MODE_ANALOG(n)          (3U << ((n) * 2U))\r
+#define PIN_ODR_LOW(n)              (0U << (n))\r
+#define PIN_ODR_HIGH(n)             (1U << (n))\r
+#define PIN_OTYPE_PUSHPULL(n)       (0U << (n))\r
+#define PIN_OTYPE_OPENDRAIN(n)      (1U << (n))\r
+#define PIN_OSPEED_VERYLOW(n)       (0U << ((n) * 2U))\r
+#define PIN_OSPEED_LOW(n)           (1U << ((n) * 2U))\r
+#define PIN_OSPEED_MEDIUM(n)        (2U << ((n) * 2U))\r
+#define PIN_OSPEED_HIGH(n)          (3U << ((n) * 2U))\r
+#define PIN_PUPDR_FLOATING(n)       (0U << ((n) * 2U))\r
+#define PIN_PUPDR_PULLUP(n)         (1U << ((n) * 2U))\r
+#define PIN_PUPDR_PULLDOWN(n)       (2U << ((n) * 2U))\r
+#define PIN_AFIO_AF(n, v)           ((v) << (((n) % 8U) * 4U))\r
+#define PIN_ASCR_DISABLED(n)        (0U << (n))\r
+#define PIN_ASCR_ENABLED(n)         (1U << (n))\r
+#define PIN_LOCKR_DISABLED(n)       (0U << (n))\r
+#define PIN_LOCKR_ENABLED(n)        (1U << (n))\r
+\r
+/*\r
+ * GPIOA setup:\r
+ *\r
+ * PA0  - ARD_A0 ACD12_IN5          (analog).\r
+ * PA1  - ARD_A1 ACD12_IN6          (analog).\r
+ * PA2  - ARD_D1 USART2_TX          (alternate 7).\r
+ * PA3  - ARD_D0 USART2_RX          (alternate 7).\r
+ * PA4  - ARD_A2 ACD12_IN9          (analog).\r
+ * PA5  - ARD_D13 LED_GREEN         (output pushpull maximum).\r
+ * PA6  - ARD_D12                   (analog).\r
+ * PA7  - ARD_D11                   (analog).\r
+ * PA8  - ARD_D7                    (analog).\r
+ * PA9  - ARD_D8                    (analog).\r
+ * PA10 - ARD_D2                    (analog).\r
+ * PA11 - PIN11                     (analog).\r
+ * PA12 - PIN12                     (analog).\r
+ * PA13 - SWDIO                     (alternate 0).\r
+ * PA14 - SWCLK                     (alternate 0).\r
+ * PA15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOA_MODER             (PIN_MODE_ANALOG(GPIOA_ARD_A0) |        \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_A1) |        \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_ARD_D1) |     \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_ARD_D0) |     \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_A2) |        \\r
+                                     PIN_MODE_OUTPUT(GPIOA_ARD_D13) |       \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_D12) |       \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_D11) |       \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_D7) |        \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_D8) |        \\r
+                                     PIN_MODE_ANALOG(GPIOA_ARD_D2) |        \\r
+                                     PIN_MODE_ANALOG(GPIOA_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOA_PIN12) |         \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_SWDIO) |      \\r
+                                     PIN_MODE_ALTERNATE(GPIOA_SWCLK) |      \\r
+                                     PIN_MODE_ANALOG(GPIOA_PIN15))\r
+#define VAL_GPIOA_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOA_ARD_A0) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_A1) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D1) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D0) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_A2) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D13) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D12) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D11) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D7) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D8) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_ARD_D2) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN15))\r
+#define VAL_GPIOA_OSPEEDR           (PIN_OSPEED_HIGH(GPIOA_ARD_A0) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_A1) |        \\r
+                                     PIN_OSPEED_MEDIUM(GPIOA_ARD_D1) |      \\r
+                                     PIN_OSPEED_MEDIUM(GPIOA_ARD_D0) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_A2) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D13) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D12) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D11) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D7) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D8) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_ARD_D2) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOA_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_SWDIO) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_SWCLK) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOA_PIN15))\r
+#define VAL_GPIOA_PUPDR             (PIN_PUPDR_FLOATING(GPIOA_ARD_A0) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_A1) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D1) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D0) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_A2) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D13) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D12) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D11) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D7) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D8) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_ARD_D2) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_PIN12) |      \\r
+                                     PIN_PUPDR_PULLUP(GPIOA_SWDIO) |        \\r
+                                     PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOA_PIN15))\r
+#define VAL_GPIOA_ODR               (PIN_ODR_HIGH(GPIOA_ARD_A0) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_A1) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D1) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D0) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_A2) |           \\r
+                                     PIN_ODR_LOW(GPIOA_ARD_D13) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D12) |          \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D11) |          \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D7) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D8) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_ARD_D2) |           \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_SWDIO) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_SWCLK) |            \\r
+                                     PIN_ODR_HIGH(GPIOA_PIN15))\r
+#define VAL_GPIOA_AFRL              (PIN_AFIO_AF(GPIOA_ARD_A0, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_A1, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D1, 7U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D0, 7U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_A2, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D13, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D12, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D11, 0U))\r
+#define VAL_GPIOA_AFRH              (PIN_AFIO_AF(GPIOA_ARD_D7, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D8, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_ARD_D2, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOA_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_SWDIO, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_SWCLK, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOA_PIN15, 0U))\r
+#define VAL_GPIOA_ASCR              (PIN_ASCR_DISABLED(GPIOA_ARD_A0) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_A1) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D1) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D0) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_A2) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D13) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D12) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D11) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D7) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D8) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_ARD_D2) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOA_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOA_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOA_SWDIO) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOA_SWCLK) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOA_PIN15))\r
+#define VAL_GPIOA_LOCKR             (PIN_LOCKR_DISABLED(GPIOA_ARD_A0) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_A1) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D1) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D0) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_A2) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D13) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D12) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D11) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D7) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D8) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_ARD_D2) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_SWDIO) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_SWCLK) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOA_PIN15))\r
+\r
+/*\r
+ * GPIOB setup:\r
+ *\r
+ * PB0  - ARD_A3 ACD12_IN15         (analog).\r
+ * PB1  - PIN1                      (analog).\r
+ * PB2  - PIN2                      (analog).\r
+ * PB3  - ARD_D3 SWO                (analog).\r
+ * PB4  - ARD_D5                    (analog).\r
+ * PB5  - ARD_D4                    (analog).\r
+ * PB6  - ARD_D10                   (analog).\r
+ * PB7  - PIN7                      (analog).\r
+ * PB8  - ARD_D15                   (analog).\r
+ * PB9  - ARD_D14                   (analog).\r
+ * PB10 - ARD_D6                    (analog).\r
+ * PB11 - PIN11                     (analog).\r
+ * PB12 - PIN12                     (analog).\r
+ * PB13 - PIN13                     (analog).\r
+ * PB14 - PIN14                     (analog).\r
+ * PB15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOB_MODER             (PIN_MODE_ANALOG(GPIOB_ARD_A3) |        \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN1) |          \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D3) |        \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D5) |        \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D4) |        \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D10) |       \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D15) |       \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D14) |       \\r
+                                     PIN_MODE_ANALOG(GPIOB_ARD_D6) |        \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOB_PIN15))\r
+#define VAL_GPIOB_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOB_ARD_A3) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D3) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D5) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D4) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D10) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D15) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D14) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_ARD_D6) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOB_PIN15))\r
+#define VAL_GPIOB_OSPEEDR           (PIN_OSPEED_HIGH(GPIOB_ARD_A3) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN1) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN2) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D3) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D5) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D4) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D10) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN7) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D15) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D14) |       \\r
+                                     PIN_OSPEED_HIGH(GPIOB_ARD_D6) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN13) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN14) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOB_PIN15))\r
+#define VAL_GPIOB_PUPDR             (PIN_PUPDR_FLOATING(GPIOB_ARD_A3) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN1) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D3) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D5) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D4) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D10) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D15) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D14) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_ARD_D6) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOB_PIN15))\r
+#define VAL_GPIOB_ODR               (PIN_ODR_HIGH(GPIOB_ARD_A3) |           \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D3) |           \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D5) |           \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D4) |           \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D10) |          \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D15) |          \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D14) |          \\r
+                                     PIN_ODR_HIGH(GPIOB_ARD_D6) |           \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOB_PIN15))\r
+#define VAL_GPIOB_AFRL              (PIN_AFIO_AF(GPIOB_ARD_A3, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOB_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D3, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D5, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D4, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D10, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOB_PIN7, 0U))\r
+#define VAL_GPIOB_AFRH              (PIN_AFIO_AF(GPIOB_ARD_D15, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D14, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOB_ARD_D6, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOB_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOB_PIN15, 0U))\r
+#define VAL_GPIOB_ASCR              (PIN_ASCR_DISABLED(GPIOB_ARD_A3) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN1) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D3) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D5) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D4) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D10) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D15) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D14) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOB_ARD_D6) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOB_PIN15))\r
+#define VAL_GPIOB_LOCKR             (PIN_LOCKR_DISABLED(GPIOB_ARD_A3) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN1) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D3) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D5) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D4) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D10) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D15) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D14) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_ARD_D6) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOB_PIN15))\r
+\r
+/*\r
+ * GPIOC setup:\r
+ *\r
+ * PC0  - ARD_A5 ACD123_IN1         (analog).\r
+ * PC1  - ARD_A4 ACD123_IN2         (analog).\r
+ * PC2  - PIN2                      (analog).\r
+ * PC3  - PIN3                      (analog).\r
+ * PC4  - PIN4                      (analog).\r
+ * PC5  - PIN5                      (analog).\r
+ * PC6  - PIN6                      (analog).\r
+ * PC7  - ARD_D9                    (analog).\r
+ * PC8  - PIN8                      (analog).\r
+ * PC9  - PIN9                      (analog).\r
+ * PC10 - PIN10                     (analog).\r
+ * PC11 - PIN11                     (analog).\r
+ * PC12 - PIN12                     (analog).\r
+ * PC13 - BUTTON                    (input floating).\r
+ * PC14 - OSC32_IN                  (input floating).\r
+ * PC15 - OSC32_OUT                 (input floating).\r
+ */\r
+#define VAL_GPIOC_MODER             (PIN_MODE_ANALOG(GPIOC_ARD_A5) |        \\r
+                                     PIN_MODE_ANALOG(GPIOC_ARD_A4) |        \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_ARD_D9) |        \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOC_PIN12) |         \\r
+                                     PIN_MODE_INPUT(GPIOC_BUTTON) |         \\r
+                                     PIN_MODE_INPUT(GPIOC_OSC32_IN) |       \\r
+                                     PIN_MODE_INPUT(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOC_ARD_A5) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_ARD_A4) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_ARD_D9) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_BUTTON) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) |   \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_OSPEEDR           (PIN_OSPEED_HIGH(GPIOC_ARD_A5) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOC_ARD_A4) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN2) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN3) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN4) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN5) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN6) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_ARD_D9) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN8) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN9) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN10) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOC_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOC_BUTTON) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOC_OSC32_IN) |      \\r
+                                     PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_PUPDR             (PIN_PUPDR_FLOATING(GPIOC_ARD_A5) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_ARD_A4) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_ARD_D9) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_BUTTON) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) |   \\r
+                                     PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_ODR               (PIN_ODR_HIGH(GPIOC_ARD_A5) |           \\r
+                                     PIN_ODR_HIGH(GPIOC_ARD_A4) |           \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_ARD_D9) |           \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOC_BUTTON) |           \\r
+                                     PIN_ODR_HIGH(GPIOC_OSC32_IN) |         \\r
+                                     PIN_ODR_HIGH(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_AFRL              (PIN_AFIO_AF(GPIOC_ARD_A5, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOC_ARD_A4, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOC_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_ARD_D9, 0U))\r
+#define VAL_GPIOC_AFRH              (PIN_AFIO_AF(GPIOC_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOC_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOC_BUTTON, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) |      \\r
+                                     PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))\r
+#define VAL_GPIOC_ASCR              (PIN_ASCR_DISABLED(GPIOC_ARD_A5) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOC_ARD_A4) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_ARD_D9) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOC_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOC_BUTTON) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOC_OSC32_IN) |    \\r
+                                     PIN_ASCR_DISABLED(GPIOC_OSC32_OUT))\r
+#define VAL_GPIOC_LOCKR             (PIN_LOCKR_DISABLED(GPIOC_ARD_A5) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_ARD_A4) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_ARD_D9) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_BUTTON) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_OSC32_IN) |   \\r
+                                     PIN_LOCKR_DISABLED(GPIOC_OSC32_OUT))\r
+\r
+/*\r
+ * GPIOD setup:\r
+ *\r
+ * PD0  - PIN0                      (analog).\r
+ * PD1  - PIN1                      (analog).\r
+ * PD2  - PIN2                      (analog).\r
+ * PD3  - PIN3                      (analog).\r
+ * PD4  - PIN4                      (analog).\r
+ * PD5  - PIN5                      (analog).\r
+ * PD6  - PIN6                      (analog).\r
+ * PD7  - PIN7                      (analog).\r
+ * PD8  - PIN8                      (analog).\r
+ * PD9  - PIN9                      (analog).\r
+ * PD10 - PIN10                     (analog).\r
+ * PD11 - PIN11                     (analog).\r
+ * PD12 - PIN12                     (analog).\r
+ * PD13 - PIN13                     (analog).\r
+ * PD14 - PIN14                     (analog).\r
+ * PD15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOD_MODER             (PIN_MODE_ANALOG(GPIOD_PIN0) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN1) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOD_PIN15))\r
+#define VAL_GPIOD_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOD_PIN15))\r
+#define VAL_GPIOD_OSPEEDR           (PIN_OSPEED_HIGH(GPIOD_PIN0) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN1) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN2) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN3) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN4) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN5) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN6) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN7) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN8) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN9) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN10) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN13) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN14) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOD_PIN15))\r
+#define VAL_GPIOD_PUPDR             (PIN_PUPDR_FLOATING(GPIOD_PIN0) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN1) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOD_PIN15))\r
+#define VAL_GPIOD_ODR               (PIN_ODR_HIGH(GPIOD_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOD_PIN15))\r
+#define VAL_GPIOD_AFRL              (PIN_AFIO_AF(GPIOD_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN7, 0U))\r
+#define VAL_GPIOD_AFRH              (PIN_AFIO_AF(GPIOD_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOD_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOD_PIN15, 0U))\r
+#define VAL_GPIOD_ASCR              (PIN_ASCR_DISABLED(GPIOD_PIN0) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN1) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOD_PIN15))\r
+#define VAL_GPIOD_LOCKR             (PIN_LOCKR_DISABLED(GPIOD_PIN0) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN1) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOD_PIN15))\r
+\r
+/*\r
+ * GPIOE setup:\r
+ *\r
+ * PE0  - PIN0                      (analog).\r
+ * PE1  - PIN1                      (analog).\r
+ * PE2  - PIN2                      (analog).\r
+ * PE3  - PIN3                      (analog).\r
+ * PE4  - PIN4                      (analog).\r
+ * PE5  - PIN5                      (analog).\r
+ * PE6  - PIN6                      (analog).\r
+ * PE7  - PIN7                      (analog).\r
+ * PE8  - PIN8                      (analog).\r
+ * PE9  - PIN9                      (analog).\r
+ * PE10 - PIN10                     (analog).\r
+ * PE11 - PIN11                     (analog).\r
+ * PE12 - PIN12                     (analog).\r
+ * PE13 - PIN13                     (analog).\r
+ * PE14 - PIN14                     (analog).\r
+ * PE15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOE_MODER             (PIN_MODE_ANALOG(GPIOE_PIN0) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN1) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOE_PIN15))\r
+#define VAL_GPIOE_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOE_PIN15))\r
+#define VAL_GPIOE_OSPEEDR           (PIN_OSPEED_HIGH(GPIOE_PIN0) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN1) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN2) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN3) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN4) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN5) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN6) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN7) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN8) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN9) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN10) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN13) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN14) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOE_PIN15))\r
+#define VAL_GPIOE_PUPDR             (PIN_PUPDR_FLOATING(GPIOE_PIN0) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN1) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOE_PIN15))\r
+#define VAL_GPIOE_ODR               (PIN_ODR_HIGH(GPIOE_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOE_PIN15))\r
+#define VAL_GPIOE_AFRL              (PIN_AFIO_AF(GPIOE_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN7, 0U))\r
+#define VAL_GPIOE_AFRH              (PIN_AFIO_AF(GPIOE_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOE_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOE_PIN15, 0U))\r
+#define VAL_GPIOE_ASCR              (PIN_ASCR_DISABLED(GPIOE_PIN0) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN1) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOE_PIN15))\r
+#define VAL_GPIOE_LOCKR             (PIN_LOCKR_DISABLED(GPIOE_PIN0) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN1) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOE_PIN15))\r
+\r
+/*\r
+ * GPIOF setup:\r
+ *\r
+ * PF0  - PIN0                      (analog).\r
+ * PF1  - PIN1                      (analog).\r
+ * PF2  - PIN2                      (analog).\r
+ * PF3  - PIN3                      (analog).\r
+ * PF4  - PIN4                      (analog).\r
+ * PF5  - PIN5                      (analog).\r
+ * PF6  - PIN6                      (analog).\r
+ * PF7  - PIN7                      (analog).\r
+ * PF8  - PIN8                      (analog).\r
+ * PF9  - PIN9                      (analog).\r
+ * PF10 - PIN10                     (analog).\r
+ * PF11 - PIN11                     (analog).\r
+ * PF12 - PIN12                     (analog).\r
+ * PF13 - PIN13                     (analog).\r
+ * PF14 - PIN14                     (analog).\r
+ * PF15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOF_MODER             (PIN_MODE_ANALOG(GPIOF_PIN0) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN1) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOF_PIN15))\r
+#define VAL_GPIOF_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOF_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOF_PIN15))\r
+#define VAL_GPIOF_OSPEEDR           (PIN_OSPEED_HIGH(GPIOF_PIN0) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN1) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN2) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN3) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN4) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN5) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN6) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN7) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN8) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN9) |          \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN10) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN11) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN12) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN13) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN14) |         \\r
+                                     PIN_OSPEED_HIGH(GPIOF_PIN15))\r
+#define VAL_GPIOF_PUPDR             (PIN_PUPDR_FLOATING(GPIOF_PIN0) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN1) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOF_PIN15))\r
+#define VAL_GPIOF_ODR               (PIN_ODR_HIGH(GPIOF_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOF_PIN15))\r
+#define VAL_GPIOF_AFRL              (PIN_AFIO_AF(GPIOF_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN7, 0U))\r
+#define VAL_GPIOF_AFRH              (PIN_AFIO_AF(GPIOF_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOF_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOF_PIN15, 0U))\r
+#define VAL_GPIOF_ASCR              (PIN_ASCR_DISABLED(GPIOF_PIN0) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN1) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOF_PIN15))\r
+#define VAL_GPIOF_LOCKR             (PIN_LOCKR_DISABLED(GPIOF_PIN0) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN1) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOF_PIN15))\r
+\r
+/*\r
+ * GPIOG setup:\r
+ *\r
+ * PG0  - PIN0                      (analog).\r
+ * PG1  - PIN1                      (analog).\r
+ * PG2  - PIN2                      (analog).\r
+ * PG3  - PIN3                      (analog).\r
+ * PG4  - PIN4                      (analog).\r
+ * PG5  - PIN5                      (analog).\r
+ * PG6  - PIN6                      (analog).\r
+ * PG7  - PIN7                      (analog).\r
+ * PG8  - PIN8                      (analog).\r
+ * PG9  - PIN9                      (analog).\r
+ * PG10 - PIN10                     (analog).\r
+ * PG11 - PIN11                     (analog).\r
+ * PG12 - PIN12                     (analog).\r
+ * PG13 - PIN13                     (analog).\r
+ * PG14 - PIN14                     (analog).\r
+ * PG15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOG_MODER             (PIN_MODE_ANALOG(GPIOG_PIN0) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN1) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOG_PIN15))\r
+#define VAL_GPIOG_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOG_PIN0) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN1) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOG_PIN15))\r
+#define VAL_GPIOG_OSPEEDR           (PIN_OSPEED_VERYLOW(GPIOG_PIN0) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN1) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOG_PIN15))\r
+#define VAL_GPIOG_PUPDR             (PIN_PUPDR_FLOATING(GPIOG_PIN0) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN1) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOG_PIN15))\r
+#define VAL_GPIOG_ODR               (PIN_ODR_HIGH(GPIOG_PIN0) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN1) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOG_PIN15))\r
+#define VAL_GPIOG_AFRL              (PIN_AFIO_AF(GPIOG_PIN0, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN1, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN7, 0U))\r
+#define VAL_GPIOG_AFRH              (PIN_AFIO_AF(GPIOG_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOG_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOG_PIN15, 0U))\r
+#define VAL_GPIOG_ASCR              (PIN_ASCR_DISABLED(GPIOG_PIN0) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN1) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOG_PIN15))\r
+#define VAL_GPIOG_LOCKR             (PIN_LOCKR_DISABLED(GPIOG_PIN0) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN1) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOG_PIN15))\r
+\r
+/*\r
+ * GPIOH setup:\r
+ *\r
+ * PH0  - OSC_IN                    (input floating).\r
+ * PH1  - OSC_OUT                   (input floating).\r
+ * PH2  - PIN2                      (analog).\r
+ * PH3  - PIN3                      (analog).\r
+ * PH4  - PIN4                      (analog).\r
+ * PH5  - PIN5                      (analog).\r
+ * PH6  - PIN6                      (analog).\r
+ * PH7  - PIN7                      (analog).\r
+ * PH8  - PIN8                      (analog).\r
+ * PH9  - PIN9                      (analog).\r
+ * PH10 - PIN10                     (analog).\r
+ * PH11 - PIN11                     (analog).\r
+ * PH12 - PIN12                     (analog).\r
+ * PH13 - PIN13                     (analog).\r
+ * PH14 - PIN14                     (analog).\r
+ * PH15 - PIN15                     (analog).\r
+ */\r
+#define VAL_GPIOH_MODER             (PIN_MODE_INPUT(GPIOH_OSC_IN) |         \\r
+                                     PIN_MODE_INPUT(GPIOH_OSC_OUT) |        \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN2) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN3) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN4) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN5) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN6) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN7) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN8) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN9) |          \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN10) |         \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN11) |         \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN12) |         \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN13) |         \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN14) |         \\r
+                                     PIN_MODE_ANALOG(GPIOH_PIN15))\r
+#define VAL_GPIOH_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOH_OSC_IN) |     \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_OSC_OUT) |    \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN2) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN3) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN4) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN5) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN6) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN7) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN8) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN9) |       \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN10) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN11) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN12) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN13) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN14) |      \\r
+                                     PIN_OTYPE_PUSHPULL(GPIOH_PIN15))\r
+#define VAL_GPIOH_OSPEEDR           (PIN_OSPEED_HIGH(GPIOH_OSC_IN) |        \\r
+                                     PIN_OSPEED_HIGH(GPIOH_OSC_OUT) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN2) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN3) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN4) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN5) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN6) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN7) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN8) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN9) |       \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN10) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN11) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN12) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN13) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN14) |      \\r
+                                     PIN_OSPEED_VERYLOW(GPIOH_PIN15))\r
+#define VAL_GPIOH_PUPDR             (PIN_PUPDR_FLOATING(GPIOH_OSC_IN) |     \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_OSC_OUT) |    \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN2) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN3) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN4) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN5) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN6) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN7) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN8) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN9) |       \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN10) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN11) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN12) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN13) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN14) |      \\r
+                                     PIN_PUPDR_FLOATING(GPIOH_PIN15))\r
+#define VAL_GPIOH_ODR               (PIN_ODR_HIGH(GPIOH_OSC_IN) |           \\r
+                                     PIN_ODR_HIGH(GPIOH_OSC_OUT) |          \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN2) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN3) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN4) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN5) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN6) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN7) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN8) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN9) |             \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN10) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN11) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN12) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN13) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN14) |            \\r
+                                     PIN_ODR_HIGH(GPIOH_PIN15))\r
+#define VAL_GPIOH_AFRL              (PIN_AFIO_AF(GPIOH_OSC_IN, 0U) |        \\r
+                                     PIN_AFIO_AF(GPIOH_OSC_OUT, 0U) |       \\r
+                                     PIN_AFIO_AF(GPIOH_PIN2, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN3, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN4, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN5, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN6, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN7, 0U))\r
+#define VAL_GPIOH_AFRH              (PIN_AFIO_AF(GPIOH_PIN8, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN9, 0U) |          \\r
+                                     PIN_AFIO_AF(GPIOH_PIN10, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN11, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN12, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN13, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN14, 0U) |         \\r
+                                     PIN_AFIO_AF(GPIOH_PIN15, 0U))\r
+#define VAL_GPIOH_ASCR              (PIN_ASCR_DISABLED(GPIOH_OSC_IN) |      \\r
+                                     PIN_ASCR_DISABLED(GPIOH_OSC_OUT) |     \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN2) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN3) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN4) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN5) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN6) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN7) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN8) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN9) |        \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN10) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN11) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN12) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN13) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN14) |       \\r
+                                     PIN_ASCR_DISABLED(GPIOH_PIN15))\r
+#define VAL_GPIOH_LOCKR             (PIN_LOCKR_DISABLED(GPIOH_OSC_IN) |     \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_OSC_OUT) |    \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN2) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN3) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN4) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN5) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN6) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN7) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN8) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN9) |       \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN10) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN11) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN12) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN13) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN14) |      \\r
+                                     PIN_LOCKR_DISABLED(GPIOH_PIN15))\r
+\r
+/*===========================================================================*/\r
+/* External declarations.                                                    */\r
+/*===========================================================================*/\r
+\r
+#if !defined(_FROM_ASM_)\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+  void boardInit(void);\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif /* _FROM_ASM_ */\r
+\r
+#endif /* BOARD_H */\r
index c6a254b645bf22e4f1aec12f9e4166557350f712..0d4d5c1e7da231116f7e4192913675099a9d2c5f 100644 (file)
@@ -1,483 +1,7 @@
-/*\r
-    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
-\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-*/\r
-\r
-#ifndef MCUCONF_H\r
-#define MCUCONF_H\r
-\r
-/*\r
- * STM32H7xx drivers configuration.\r
- * The following settings override the default settings present in\r
- * the various device driver implementation headers.\r
- * Note that the settings for each driver only have effect if the whole\r
- * driver is enabled in halconf.h.\r
- *\r
- * IRQ priorities:\r
- * 15...0       Lowest...Highest.\r
- *\r
- * DMA priorities:\r
- * 0...3        Lowest...Highest.\r
- */\r
-\r
-#define STM32H7xx_MCUCONF\r
-#define STM32H723_MCUCONF\r
-#define STM32H725_MCUCONF\r
-//#define STM32H743_MCUCONF\r
-\r
-/*\r
- * General settings.\r
- */\r
-#define STM32_NO_INIT                       FALSE\r
-#define STM32_TARGET_CORE                   1\r
-\r
-/*\r
- * Memory attributes settings.\r
- */\r
-#define STM32_NOCACHE_MPU_REGION            MPU_REGION_1\r
-#define STM32_NOCACHE_SRAM1_SRAM2           FALSE\r
-#define STM32_NOCACHE_SRAM3                 FALSE\r
-#define STM32_NOCACHE_ALLSRAM               TRUE\r
-\r
-/*\r
- * PWR system settings.\r
- * Reading STM32 Reference Manual is required, settings in PWR_CR3 are\r
- * very critical.\r
- * Register constants are taken from the ST header.\r
- */\r
-#define STM32_VOS                           STM32_VOS_SCALE1\r
-#define STM32_PWR_CR1                       (PWR_CR1_SVOS_1 | PWR_CR1_SVOS_0)\r
-#define STM32_PWR_CR2                       (PWR_CR2_BREN)\r
-#define STM32_PWR_CR3                       (PWR_CR3_LDOEN | PWR_CR3_USB33DEN)\r
-#define STM32_PWR_CPUCR                     0\r
-\r
-/*\r
- * Clock tree static settings.\r
- * Reading STM32 Reference Manual is required.\r
- */\r
-#define STM32_HSI_ENABLED                   TRUE\r
-#define STM32_LSI_ENABLED                   TRUE\r
-#define STM32_CSI_ENABLED                   FALSE\r
-#define STM32_HSI48_ENABLED                 TRUE\r
-#define STM32_HSE_ENABLED                   FALSE\r
-#define STM32_LSE_ENABLED                   FALSE\r
-#define STM32_HSIDIV                        STM32_HSIDIV_DIV8 // HSI = 8MHz\r
-\r
-/*\r
- * PLLs static settings.\r
- * Reading STM32 Reference Manual is required.\r
- */\r
-#define STM32_PLLSRC                        STM32_PLLSRC_HSI_CK\r
-#define STM32_PLLCFGR_MASK                  ~0\r
-#define STM32_PLL1_ENABLED                  TRUE\r
-#define STM32_PLL1_P_ENABLED                TRUE\r
-#define STM32_PLL1_Q_ENABLED                FALSE\r
-#define STM32_PLL1_R_ENABLED                FALSE\r
-#define STM32_PLL1_DIVM_VALUE               4   // 8 / 4 = 2MHz\r
-#define STM32_PLL1_DIVN_VALUE               240 // = 2 * 240\r
-#define STM32_PLL1_FRACN_VALUE              0\r
-#define STM32_PLL1_DIVP_VALUE               1   // = 480MHz\r
-#define STM32_PLL1_DIVQ_VALUE               16\r
-#define STM32_PLL1_DIVR_VALUE               8\r
-#define STM32_PLL2_ENABLED                  TRUE  // PLL2 adjusted by adc.cpp\r
-#define STM32_PLL2_P_ENABLED                TRUE\r
-#define STM32_PLL2_Q_ENABLED                FALSE\r
-#define STM32_PLL2_R_ENABLED                FALSE\r
-#define STM32_PLL2_DIVM_VALUE               4\r
-#define STM32_PLL2_DIVN_VALUE               80\r
-#define STM32_PLL2_FRACN_VALUE              0\r
-#define STM32_PLL2_DIVP_VALUE               20\r
-#define STM32_PLL2_DIVQ_VALUE               8\r
-#define STM32_PLL2_DIVR_VALUE               8\r
-#define STM32_PLL3_ENABLED                  FALSE\r
-#define STM32_PLL3_P_ENABLED                FALSE\r
-#define STM32_PLL3_Q_ENABLED                FALSE\r
-#define STM32_PLL3_R_ENABLED                FALSE\r
-#define STM32_PLL3_DIVM_VALUE               4\r
-#define STM32_PLL3_DIVN_VALUE               400\r
-#define STM32_PLL3_FRACN_VALUE              0\r
-#define STM32_PLL3_DIVP_VALUE               8\r
-#define STM32_PLL3_DIVQ_VALUE               8\r
-#define STM32_PLL3_DIVR_VALUE               8\r
-\r
-/*\r
- * Core clocks dynamic settings (can be changed at runtime).\r
- * Reading STM32 Reference Manual is required.\r
- */\r
-#define STM32_SW                            STM32_SW_PLL1_P_CK\r
-#define STM32_RTCSEL                        STM32_RTCSEL_LSI_CK\r
-#define STM32_D1CPRE                        STM32_D1CPRE_DIV1\r
-#define STM32_D1HPRE                        STM32_D1HPRE_DIV2  // /2 = 240MHz\r
-#define STM32_D1PPRE3                       STM32_D1PPRE3_DIV2\r
-#define STM32_D2PPRE1                       STM32_D2PPRE1_DIV2\r
-#define STM32_D2PPRE2                       STM32_D2PPRE2_DIV2\r
-#define STM32_D3PPRE4                       STM32_D3PPRE4_DIV2\r
-\r
-/*\r
- * Peripherals clocks static settings.\r
- * Reading STM32 Reference Manual is required.\r
- */\r
-#define STM32_MCO1SEL                       STM32_MCO1SEL_HSI_CK\r
-#define STM32_MCO1PRE_VALUE                 4\r
-#define STM32_MCO2SEL                       STM32_MCO2SEL_SYS_CK\r
-#define STM32_MCO2PRE_VALUE                 4\r
-#define STM32_TIMPRE_ENABLE                 TRUE\r
-#define STM32_HRTIMSEL                      0\r
-#define STM32_STOPKERWUCK                   0\r
-#define STM32_STOPWUCK                      0\r
-#define STM32_RTCPRE_VALUE                  8\r
-#define STM32_CKPERSEL                      STM32_CKPERSEL_HSI_CK\r
-#define STM32_SDMMCSEL                      STM32_SDMMCSEL_PLL1_Q_CK\r
-//#define STM32_OCTOSPISEL                    STM32_OCTOSPISEL_HCLK\r
-//#define STM32_FMCSEL                        STM32_OCTOSPISEL_HCLK\r
-#define STM32_SWPSEL                        STM32_SWPSEL_PCLK1\r
-#define STM32_FDCANSEL                      STM32_FDCANSEL_HSE_CK\r
-#define STM32_DFSDM1SEL                     STM32_DFSDM1SEL_PCLK2\r
-#define STM32_SPDIFSEL                      STM32_SPDIFSEL_PLL1_Q_CK\r
-#define STM32_SPI45SEL                      STM32_SPI45SEL_PCLK2\r
-#define STM32_SPI123SEL                     STM32_SPI123SEL_PLL1_Q_CK\r
-//#define STM32_SAI23SEL                      STM32_SAI23SEL_PLL1_Q_CK\r
-#define STM32_SAI1SEL                       STM32_SAI1SEL_PLL1_Q_CK\r
-#define STM32_LPTIM1SEL                     STM32_LPTIM1SEL_PCLK1\r
-#define STM32_CECSEL                        STM32_CECSEL_LSE_CK\r
-#define STM32_USBSEL                        STM32_USBSEL_HSI48_CK\r
-#define STM32_I2C1235SEL                    STM32_I2C1235SEL_PCLK1\r
-#define STM32_RNGSEL                        STM32_RNGSEL_HSI48_CK\r
-#define STM32_USART16910SEL                 STM32_USART16910SEL_PCLK2\r
-#define STM32_USART234578SEL                STM32_USART234578SEL_PCLK1\r
-#define STM32_SPI6SEL                       STM32_SPI6SEL_PCLK4\r
-#define STM32_SAI4BSEL                      STM32_SAI4BSEL_PLL1_Q_CK\r
-#define STM32_SAI4ASEL                      STM32_SAI4ASEL_PLL1_Q_CK\r
-#define STM32_ADCSEL                        STM32_ADCSEL_PLL2_P_CK\r
-#define STM32_LPTIM345SEL                   STM32_LPTIM345SEL_PCLK4\r
-#define STM32_LPTIM2SEL                     STM32_LPTIM2SEL_PCLK4\r
-#define STM32_I2C4SEL                       STM32_I2C4SEL_PCLK4\r
-#define STM32_LPUART1SEL                    STM32_LPUART1SEL_PCLK4\r
-\r
-/*\r
- * IRQ system settings.\r
- */\r
-#define STM32_IRQ_EXTI0_PRIORITY            6\r
-#define STM32_IRQ_EXTI1_PRIORITY            6\r
-#define STM32_IRQ_EXTI2_PRIORITY            6\r
-#define STM32_IRQ_EXTI3_PRIORITY            6\r
-#define STM32_IRQ_EXTI4_PRIORITY            6\r
-#define STM32_IRQ_EXTI5_9_PRIORITY          6\r
-#define STM32_IRQ_EXTI10_15_PRIORITY        6\r
-#define STM32_IRQ_EXTI16_PRIORITY           6\r
-#define STM32_IRQ_EXTI17_PRIORITY           6\r
-#define STM32_IRQ_EXTI18_PRIORITY           6\r
-#define STM32_IRQ_EXTI19_PRIORITY           6\r
-#define STM32_IRQ_EXTI20_21_PRIORITY        6\r
-\r
-#define STM32_IRQ_FDCAN1_PRIORITY           10\r
-#define STM32_IRQ_FDCAN2_PRIORITY           10\r
-\r
-#define STM32_IRQ_MDMA_PRIORITY             9\r
-\r
-#define STM32_IRQ_QUADSPI1_PRIORITY         10\r
-\r
-#define STM32_IRQ_SDMMC1_PRIORITY           9\r
-#define STM32_IRQ_SDMMC2_PRIORITY           9\r
-\r
-#define STM32_IRQ_TIM1_UP_PRIORITY          7\r
-#define STM32_IRQ_TIM1_CC_PRIORITY          7\r
-#define STM32_IRQ_TIM2_PRIORITY             7\r
-#define STM32_IRQ_TIM3_PRIORITY             7\r
-#define STM32_IRQ_TIM4_PRIORITY             7\r
-#define STM32_IRQ_TIM5_PRIORITY             7\r
-#define STM32_IRQ_TIM6_PRIORITY             7\r
-#define STM32_IRQ_TIM7_PRIORITY             7\r
-#define STM32_IRQ_TIM8_BRK_TIM12_PRIORITY   7\r
-#define STM32_IRQ_TIM8_UP_TIM13_PRIORITY    7\r
-#define STM32_IRQ_TIM8_TRGCO_TIM14_PRIORITY 7\r
-#define STM32_IRQ_TIM8_CC_PRIORITY          7\r
-#define STM32_IRQ_TIM15_PRIORITY            7\r
-#define STM32_IRQ_TIM16_PRIORITY            7\r
-#define STM32_IRQ_TIM17_PRIORITY            7\r
-\r
-#define STM32_IRQ_USART1_PRIORITY           12\r
-#define STM32_IRQ_USART2_PRIORITY           12\r
-#define STM32_IRQ_USART3_PRIORITY           12\r
-#define STM32_IRQ_UART4_PRIORITY            12\r
-#define STM32_IRQ_UART5_PRIORITY            12\r
-#define STM32_IRQ_USART6_PRIORITY           12\r
-#define STM32_IRQ_UART7_PRIORITY            12\r
-#define STM32_IRQ_UART8_PRIORITY            12\r
-#define STM32_IRQ_LPUART1_PRIORITY          12\r
-\r
-/*\r
- * ADC driver system settings.\r
- */\r
-#define STM32_ADC_DUAL_MODE                 FALSE\r
-#define STM32_ADC_COMPACT_SAMPLES           FALSE\r
-#define STM32_ADC_USE_ADC12                 FALSE\r
-#define STM32_ADC_USE_ADC3                  TRUE\r
-#define STM32_ADC_ADC12_DMA_STREAM          STM32_DMA_STREAM_ID_ANY\r
-#define STM32_ADC_ADC3_BDMA_STREAM          STM32_BDMA_STREAM_ID_ANY\r
-#define STM32_ADC_ADC12_DMA_PRIORITY        2\r
-#define STM32_ADC_ADC3_DMA_PRIORITY         2\r
-#define STM32_ADC_ADC12_IRQ_PRIORITY        5\r
-#define STM32_ADC_ADC3_IRQ_PRIORITY         5\r
-#define STM32_ADC_ADC12_CLOCK_MODE          ADC_CCR_CKMODE_AHB_DIV4\r
-#define STM32_ADC_ADC3_CLOCK_MODE           ADC_CCR_CKMODE_ADCCK\r
-#define STM32_ADC_ADC3_PRESC                (5 << ADC_CCR_PRESC_Pos) // /10\r
-\r
-/*\r
- * CAN driver system settings.\r
- */\r
-#define STM32_CAN_USE_FDCAN1                FALSE\r
-#define STM32_CAN_USE_FDCAN2                FALSE\r
-\r
-/*\r
- * DAC driver system settings.\r
- */\r
-#define STM32_DAC_DUAL_MODE                 FALSE\r
-#define STM32_DAC_USE_DAC1_CH1              TRUE\r
-#define STM32_DAC_USE_DAC1_CH2              TRUE\r
-#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY     10\r
-#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY     10\r
-#define STM32_DAC_DAC1_CH1_DMA_PRIORITY     2\r
-#define STM32_DAC_DAC1_CH2_DMA_PRIORITY     2\r
-#define STM32_DAC_DAC1_CH1_DMA_STREAM       STM32_DMA_STREAM_ID_ANY\r
-#define STM32_DAC_DAC1_CH2_DMA_STREAM       STM32_DMA_STREAM_ID_ANY\r
-\r
-/*\r
- * GPT driver system settings.\r
- */\r
-#define STM32_GPT_USE_TIM1                  FALSE\r
-#define STM32_GPT_USE_TIM2                  FALSE\r
-#define STM32_GPT_USE_TIM3                  FALSE\r
-#define STM32_GPT_USE_TIM4                  FALSE\r
-#define STM32_GPT_USE_TIM5                  FALSE\r
-#define STM32_GPT_USE_TIM6                  TRUE\r
-#define STM32_GPT_USE_TIM7                  FALSE\r
-#define STM32_GPT_USE_TIM8                  FALSE\r
-#define STM32_GPT_USE_TIM12                 FALSE\r
-#define STM32_GPT_USE_TIM13                 FALSE\r
-#define STM32_GPT_USE_TIM14                 FALSE\r
-#define STM32_GPT_USE_TIM15                 FALSE\r
-#define STM32_GPT_USE_TIM16                 FALSE\r
-#define STM32_GPT_USE_TIM17                 FALSE\r
-\r
-/*\r
- * I2C driver system settings.\r
- */\r
-#define STM32_I2C_USE_I2C1                  FALSE\r
-#define STM32_I2C_USE_I2C2                  FALSE\r
-#define STM32_I2C_USE_I2C3                  FALSE\r
-#define STM32_I2C_USE_I2C4                  FALSE\r
-#define STM32_I2C_BUSY_TIMEOUT              50\r
-#define STM32_I2C_I2C1_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C1_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C2_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C2_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C3_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C3_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C4_RX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C4_TX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
-#define STM32_I2C_I2C1_IRQ_PRIORITY         5\r
-#define STM32_I2C_I2C2_IRQ_PRIORITY         5\r
-#define STM32_I2C_I2C3_IRQ_PRIORITY         5\r
-#define STM32_I2C_I2C4_IRQ_PRIORITY         5\r
-#define STM32_I2C_I2C1_DMA_PRIORITY         3\r
-#define STM32_I2C_I2C2_DMA_PRIORITY         3\r
-#define STM32_I2C_I2C3_DMA_PRIORITY         3\r
-#define STM32_I2C_I2C4_DMA_PRIORITY         3\r
-#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")\r
-\r
-/*\r
- * ICU driver system settings.\r
- */\r
-#define STM32_ICU_USE_TIM1                  FALSE\r
-#define STM32_ICU_USE_TIM2                  FALSE\r
-#define STM32_ICU_USE_TIM3                  FALSE\r
-#define STM32_ICU_USE_TIM4                  FALSE\r
-#define STM32_ICU_USE_TIM5                  FALSE\r
-#define STM32_ICU_USE_TIM8                  FALSE\r
-#define STM32_ICU_USE_TIM12                 FALSE\r
-#define STM32_ICU_USE_TIM13                 FALSE\r
-#define STM32_ICU_USE_TIM14                 FALSE\r
-#define STM32_ICU_USE_TIM15                 FALSE\r
-#define STM32_ICU_USE_TIM16                 FALSE\r
-#define STM32_ICU_USE_TIM17                 FALSE\r
-\r
-/*\r
- * MAC driver system settings.\r
- */\r
-#define STM32_MAC_TRANSMIT_BUFFERS          2\r
-#define STM32_MAC_RECEIVE_BUFFERS           4\r
-#define STM32_MAC_BUFFERS_SIZE              1522\r
-#define STM32_MAC_PHY_TIMEOUT               100\r
-#define STM32_MAC_ETH1_CHANGE_PHY_STATE     TRUE\r
-#define STM32_MAC_ETH1_IRQ_PRIORITY         13\r
-#define STM32_MAC_IP_CHECKSUM_OFFLOAD       0\r
-\r
-/*\r
- * PWM driver system settings.\r
- */\r
-#define STM32_PWM_USE_ADVANCED              FALSE\r
-#define STM32_PWM_USE_TIM1                  FALSE\r
-#define STM32_PWM_USE_TIM2                  FALSE\r
-#define STM32_PWM_USE_TIM3                  FALSE\r
-#define STM32_PWM_USE_TIM4                  FALSE\r
-#define STM32_PWM_USE_TIM5                  FALSE\r
-#define STM32_PWM_USE_TIM8                  FALSE\r
-#define STM32_PWM_USE_TIM12                 FALSE\r
-#define STM32_PWM_USE_TIM13                 FALSE\r
-#define STM32_PWM_USE_TIM14                 FALSE\r
-#define STM32_PWM_USE_TIM15                 FALSE\r
-#define STM32_PWM_USE_TIM16                 FALSE\r
-#define STM32_PWM_USE_TIM17                 FALSE\r
-\r
-/*\r
- * RTC driver system settings.\r
- */\r
-#define STM32_RTC_PRESA_VALUE               32\r
-#define STM32_RTC_PRESS_VALUE               1024\r
-#define STM32_RTC_CR_INIT                   0\r
-#define STM32_RTC_TAMPCR_INIT               0\r
-\r
-/*\r
- * SDC driver system settings.\r
- */\r
-#define STM32_SDC_USE_SDMMC1                FALSE\r
-#define STM32_SDC_USE_SDMMC2                FALSE\r
-#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT   TRUE\r
-#define STM32_SDC_SDMMC_WRITE_TIMEOUT       1000000\r
-#define STM32_SDC_SDMMC_READ_TIMEOUT        1000000\r
-#define STM32_SDC_SDMMC_CLOCK_DELAY         10\r
-#define STM32_SDC_SDMMC_PWRSAV              TRUE\r
-\r
-/*\r
- * SERIAL driver system settings.\r
- */\r
-#define STM32_SERIAL_USE_USART1             FALSE\r
-#define STM32_SERIAL_USE_USART2             FALSE\r
-#define STM32_SERIAL_USE_USART3             FALSE\r
-#define STM32_SERIAL_USE_UART4              FALSE\r
-#define STM32_SERIAL_USE_UART5              FALSE\r
-#define STM32_SERIAL_USE_USART6             FALSE\r
-#define STM32_SERIAL_USE_UART7              FALSE\r
-#define STM32_SERIAL_USE_UART8              FALSE\r
-\r
-/*\r
- * SPI driver system settings.\r
- */\r
-#define STM32_SPI_USE_SPI1                  FALSE\r
-#define STM32_SPI_USE_SPI2                  FALSE\r
-#define STM32_SPI_USE_SPI3                  FALSE\r
-#define STM32_SPI_USE_SPI4                  FALSE\r
-#define STM32_SPI_USE_SPI5                  FALSE\r
-#define STM32_SPI_USE_SPI6                  FALSE\r
-#define STM32_SPI_SPI1_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI1_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI2_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI2_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI3_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI3_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI4_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI4_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI5_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI5_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI6_RX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI6_TX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
-#define STM32_SPI_SPI1_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI2_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI3_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI4_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI5_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI6_DMA_PRIORITY         1\r
-#define STM32_SPI_SPI1_IRQ_PRIORITY         10\r
-#define STM32_SPI_SPI2_IRQ_PRIORITY         10\r
-#define STM32_SPI_SPI3_IRQ_PRIORITY         10\r
-#define STM32_SPI_SPI4_IRQ_PRIORITY         10\r
-#define STM32_SPI_SPI5_IRQ_PRIORITY         10\r
-#define STM32_SPI_SPI6_IRQ_PRIORITY         10\r
-#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")\r
-\r
-/*\r
- * ST driver system settings.\r
- */\r
-#define STM32_ST_IRQ_PRIORITY               8\r
-#define STM32_ST_USE_TIMER                  2\r
-\r
-/*\r
- * TRNG driver system settings.\r
- */\r
-#define STM32_TRNG_USE_RNG1                 FALSE\r
-\r
-/*\r
- * UART driver system settings.\r
- */\r
-#define STM32_UART_USE_USART1               FALSE\r
-#define STM32_UART_USE_USART2               FALSE\r
-#define STM32_UART_USE_USART3               FALSE\r
-#define STM32_UART_USE_UART4                FALSE\r
-#define STM32_UART_USE_UART5                FALSE\r
-#define STM32_UART_USE_USART6               FALSE\r
-#define STM32_UART_USE_UART7                FALSE\r
-#define STM32_UART_USE_UART8                FALSE\r
-#define STM32_UART_USART1_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART1_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART2_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART2_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART3_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART3_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART4_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART4_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART5_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART5_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART6_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART6_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART7_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART7_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART8_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_UART8_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
-#define STM32_UART_USART1_DMA_PRIORITY      0\r
-#define STM32_UART_USART2_DMA_PRIORITY      0\r
-#define STM32_UART_USART3_DMA_PRIORITY      0\r
-#define STM32_UART_UART4_DMA_PRIORITY       0\r
-#define STM32_UART_UART5_DMA_PRIORITY       0\r
-#define STM32_UART_USART6_DMA_PRIORITY      0\r
-#define STM32_UART_UART7_DMA_PRIORITY       0\r
-#define STM32_UART_UART8_DMA_PRIORITY       0\r
-#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")\r
-\r
-/*\r
- * USB driver system settings.\r
- */\r
-#define STM32_USB_USE_OTG1                  FALSE\r
-#define STM32_USB_USE_OTG2                  TRUE\r
-#define STM32_USB_OTG1_IRQ_PRIORITY         14\r
-#define STM32_USB_OTG2_IRQ_PRIORITY         14\r
-#define STM32_USB_OTG1_RX_FIFO_SIZE         512\r
-#define STM32_USB_OTG2_RX_FIFO_SIZE         1024\r
-#define STM32_USB_HOST_WAKEUP_DURATION      2\r
-\r
-/*\r
- * WDG driver system settings.\r
- */\r
-#define STM32_WDG_USE_IWDG                  FALSE\r
-\r
-/*\r
- * WSPI driver system settings.\r
- */\r
-#define STM32_WSPI_USE_QUADSPI1             FALSE\r
-#define STM32_WSPI_QUADSPI1_PRESCALER_VALUE 1\r
-#define STM32_WSPI_QUADSPI1_MDMA_CHANNEL    STM32_MDMA_CHANNEL_ID_ANY\r
-#define STM32_WSPI_QUADSPI1_MDMA_PRIORITY   1\r
-#define STM32_WSPI_MDMA_ERROR_HOOK(qspip)   osalSysHalt("MDMA failure")\r
-\r
-#endif /* MCUCONF_H */\r
+#if defined(TARGET_PLATFORM_L4)\r
+#include "mcuconf_l4.h"\r
+#elif defined(TARGET_PLATFORM_H7)\r
+#include "mcuconf_h7.h"\r
+#elif defined(TARGET_PLATFORM_G4)\r
+#include "mcuconf_g4.h"\r
+#endif\r
diff --git a/cfg/mcuconf_h7.h b/cfg/mcuconf_h7.h
new file mode 100644 (file)
index 0000000..c6a254b
--- /dev/null
@@ -0,0 +1,483 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+#ifndef MCUCONF_H\r
+#define MCUCONF_H\r
+\r
+/*\r
+ * STM32H7xx drivers configuration.\r
+ * The following settings override the default settings present in\r
+ * the various device driver implementation headers.\r
+ * Note that the settings for each driver only have effect if the whole\r
+ * driver is enabled in halconf.h.\r
+ *\r
+ * IRQ priorities:\r
+ * 15...0       Lowest...Highest.\r
+ *\r
+ * DMA priorities:\r
+ * 0...3        Lowest...Highest.\r
+ */\r
+\r
+#define STM32H7xx_MCUCONF\r
+#define STM32H723_MCUCONF\r
+#define STM32H725_MCUCONF\r
+//#define STM32H743_MCUCONF\r
+\r
+/*\r
+ * General settings.\r
+ */\r
+#define STM32_NO_INIT                       FALSE\r
+#define STM32_TARGET_CORE                   1\r
+\r
+/*\r
+ * Memory attributes settings.\r
+ */\r
+#define STM32_NOCACHE_MPU_REGION            MPU_REGION_1\r
+#define STM32_NOCACHE_SRAM1_SRAM2           FALSE\r
+#define STM32_NOCACHE_SRAM3                 FALSE\r
+#define STM32_NOCACHE_ALLSRAM               TRUE\r
+\r
+/*\r
+ * PWR system settings.\r
+ * Reading STM32 Reference Manual is required, settings in PWR_CR3 are\r
+ * very critical.\r
+ * Register constants are taken from the ST header.\r
+ */\r
+#define STM32_VOS                           STM32_VOS_SCALE1\r
+#define STM32_PWR_CR1                       (PWR_CR1_SVOS_1 | PWR_CR1_SVOS_0)\r
+#define STM32_PWR_CR2                       (PWR_CR2_BREN)\r
+#define STM32_PWR_CR3                       (PWR_CR3_LDOEN | PWR_CR3_USB33DEN)\r
+#define STM32_PWR_CPUCR                     0\r
+\r
+/*\r
+ * Clock tree static settings.\r
+ * Reading STM32 Reference Manual is required.\r
+ */\r
+#define STM32_HSI_ENABLED                   TRUE\r
+#define STM32_LSI_ENABLED                   TRUE\r
+#define STM32_CSI_ENABLED                   FALSE\r
+#define STM32_HSI48_ENABLED                 TRUE\r
+#define STM32_HSE_ENABLED                   FALSE\r
+#define STM32_LSE_ENABLED                   FALSE\r
+#define STM32_HSIDIV                        STM32_HSIDIV_DIV8 // HSI = 8MHz\r
+\r
+/*\r
+ * PLLs static settings.\r
+ * Reading STM32 Reference Manual is required.\r
+ */\r
+#define STM32_PLLSRC                        STM32_PLLSRC_HSI_CK\r
+#define STM32_PLLCFGR_MASK                  ~0\r
+#define STM32_PLL1_ENABLED                  TRUE\r
+#define STM32_PLL1_P_ENABLED                TRUE\r
+#define STM32_PLL1_Q_ENABLED                FALSE\r
+#define STM32_PLL1_R_ENABLED                FALSE\r
+#define STM32_PLL1_DIVM_VALUE               4   // 8 / 4 = 2MHz\r
+#define STM32_PLL1_DIVN_VALUE               240 // = 2 * 240\r
+#define STM32_PLL1_FRACN_VALUE              0\r
+#define STM32_PLL1_DIVP_VALUE               1   // = 480MHz\r
+#define STM32_PLL1_DIVQ_VALUE               16\r
+#define STM32_PLL1_DIVR_VALUE               8\r
+#define STM32_PLL2_ENABLED                  TRUE  // PLL2 adjusted by adc.cpp\r
+#define STM32_PLL2_P_ENABLED                TRUE\r
+#define STM32_PLL2_Q_ENABLED                FALSE\r
+#define STM32_PLL2_R_ENABLED                FALSE\r
+#define STM32_PLL2_DIVM_VALUE               4\r
+#define STM32_PLL2_DIVN_VALUE               80\r
+#define STM32_PLL2_FRACN_VALUE              0\r
+#define STM32_PLL2_DIVP_VALUE               20\r
+#define STM32_PLL2_DIVQ_VALUE               8\r
+#define STM32_PLL2_DIVR_VALUE               8\r
+#define STM32_PLL3_ENABLED                  FALSE\r
+#define STM32_PLL3_P_ENABLED                FALSE\r
+#define STM32_PLL3_Q_ENABLED                FALSE\r
+#define STM32_PLL3_R_ENABLED                FALSE\r
+#define STM32_PLL3_DIVM_VALUE               4\r
+#define STM32_PLL3_DIVN_VALUE               400\r
+#define STM32_PLL3_FRACN_VALUE              0\r
+#define STM32_PLL3_DIVP_VALUE               8\r
+#define STM32_PLL3_DIVQ_VALUE               8\r
+#define STM32_PLL3_DIVR_VALUE               8\r
+\r
+/*\r
+ * Core clocks dynamic settings (can be changed at runtime).\r
+ * Reading STM32 Reference Manual is required.\r
+ */\r
+#define STM32_SW                            STM32_SW_PLL1_P_CK\r
+#define STM32_RTCSEL                        STM32_RTCSEL_LSI_CK\r
+#define STM32_D1CPRE                        STM32_D1CPRE_DIV1\r
+#define STM32_D1HPRE                        STM32_D1HPRE_DIV2  // /2 = 240MHz\r
+#define STM32_D1PPRE3                       STM32_D1PPRE3_DIV2\r
+#define STM32_D2PPRE1                       STM32_D2PPRE1_DIV2\r
+#define STM32_D2PPRE2                       STM32_D2PPRE2_DIV2\r
+#define STM32_D3PPRE4                       STM32_D3PPRE4_DIV2\r
+\r
+/*\r
+ * Peripherals clocks static settings.\r
+ * Reading STM32 Reference Manual is required.\r
+ */\r
+#define STM32_MCO1SEL                       STM32_MCO1SEL_HSI_CK\r
+#define STM32_MCO1PRE_VALUE                 4\r
+#define STM32_MCO2SEL                       STM32_MCO2SEL_SYS_CK\r
+#define STM32_MCO2PRE_VALUE                 4\r
+#define STM32_TIMPRE_ENABLE                 TRUE\r
+#define STM32_HRTIMSEL                      0\r
+#define STM32_STOPKERWUCK                   0\r
+#define STM32_STOPWUCK                      0\r
+#define STM32_RTCPRE_VALUE                  8\r
+#define STM32_CKPERSEL                      STM32_CKPERSEL_HSI_CK\r
+#define STM32_SDMMCSEL                      STM32_SDMMCSEL_PLL1_Q_CK\r
+//#define STM32_OCTOSPISEL                    STM32_OCTOSPISEL_HCLK\r
+//#define STM32_FMCSEL                        STM32_OCTOSPISEL_HCLK\r
+#define STM32_SWPSEL                        STM32_SWPSEL_PCLK1\r
+#define STM32_FDCANSEL                      STM32_FDCANSEL_HSE_CK\r
+#define STM32_DFSDM1SEL                     STM32_DFSDM1SEL_PCLK2\r
+#define STM32_SPDIFSEL                      STM32_SPDIFSEL_PLL1_Q_CK\r
+#define STM32_SPI45SEL                      STM32_SPI45SEL_PCLK2\r
+#define STM32_SPI123SEL                     STM32_SPI123SEL_PLL1_Q_CK\r
+//#define STM32_SAI23SEL                      STM32_SAI23SEL_PLL1_Q_CK\r
+#define STM32_SAI1SEL                       STM32_SAI1SEL_PLL1_Q_CK\r
+#define STM32_LPTIM1SEL                     STM32_LPTIM1SEL_PCLK1\r
+#define STM32_CECSEL                        STM32_CECSEL_LSE_CK\r
+#define STM32_USBSEL                        STM32_USBSEL_HSI48_CK\r
+#define STM32_I2C1235SEL                    STM32_I2C1235SEL_PCLK1\r
+#define STM32_RNGSEL                        STM32_RNGSEL_HSI48_CK\r
+#define STM32_USART16910SEL                 STM32_USART16910SEL_PCLK2\r
+#define STM32_USART234578SEL                STM32_USART234578SEL_PCLK1\r
+#define STM32_SPI6SEL                       STM32_SPI6SEL_PCLK4\r
+#define STM32_SAI4BSEL                      STM32_SAI4BSEL_PLL1_Q_CK\r
+#define STM32_SAI4ASEL                      STM32_SAI4ASEL_PLL1_Q_CK\r
+#define STM32_ADCSEL                        STM32_ADCSEL_PLL2_P_CK\r
+#define STM32_LPTIM345SEL                   STM32_LPTIM345SEL_PCLK4\r
+#define STM32_LPTIM2SEL                     STM32_LPTIM2SEL_PCLK4\r
+#define STM32_I2C4SEL                       STM32_I2C4SEL_PCLK4\r
+#define STM32_LPUART1SEL                    STM32_LPUART1SEL_PCLK4\r
+\r
+/*\r
+ * IRQ system settings.\r
+ */\r
+#define STM32_IRQ_EXTI0_PRIORITY            6\r
+#define STM32_IRQ_EXTI1_PRIORITY            6\r
+#define STM32_IRQ_EXTI2_PRIORITY            6\r
+#define STM32_IRQ_EXTI3_PRIORITY            6\r
+#define STM32_IRQ_EXTI4_PRIORITY            6\r
+#define STM32_IRQ_EXTI5_9_PRIORITY          6\r
+#define STM32_IRQ_EXTI10_15_PRIORITY        6\r
+#define STM32_IRQ_EXTI16_PRIORITY           6\r
+#define STM32_IRQ_EXTI17_PRIORITY           6\r
+#define STM32_IRQ_EXTI18_PRIORITY           6\r
+#define STM32_IRQ_EXTI19_PRIORITY           6\r
+#define STM32_IRQ_EXTI20_21_PRIORITY        6\r
+\r
+#define STM32_IRQ_FDCAN1_PRIORITY           10\r
+#define STM32_IRQ_FDCAN2_PRIORITY           10\r
+\r
+#define STM32_IRQ_MDMA_PRIORITY             9\r
+\r
+#define STM32_IRQ_QUADSPI1_PRIORITY         10\r
+\r
+#define STM32_IRQ_SDMMC1_PRIORITY           9\r
+#define STM32_IRQ_SDMMC2_PRIORITY           9\r
+\r
+#define STM32_IRQ_TIM1_UP_PRIORITY          7\r
+#define STM32_IRQ_TIM1_CC_PRIORITY          7\r
+#define STM32_IRQ_TIM2_PRIORITY             7\r
+#define STM32_IRQ_TIM3_PRIORITY             7\r
+#define STM32_IRQ_TIM4_PRIORITY             7\r
+#define STM32_IRQ_TIM5_PRIORITY             7\r
+#define STM32_IRQ_TIM6_PRIORITY             7\r
+#define STM32_IRQ_TIM7_PRIORITY             7\r
+#define STM32_IRQ_TIM8_BRK_TIM12_PRIORITY   7\r
+#define STM32_IRQ_TIM8_UP_TIM13_PRIORITY    7\r
+#define STM32_IRQ_TIM8_TRGCO_TIM14_PRIORITY 7\r
+#define STM32_IRQ_TIM8_CC_PRIORITY          7\r
+#define STM32_IRQ_TIM15_PRIORITY            7\r
+#define STM32_IRQ_TIM16_PRIORITY            7\r
+#define STM32_IRQ_TIM17_PRIORITY            7\r
+\r
+#define STM32_IRQ_USART1_PRIORITY           12\r
+#define STM32_IRQ_USART2_PRIORITY           12\r
+#define STM32_IRQ_USART3_PRIORITY           12\r
+#define STM32_IRQ_UART4_PRIORITY            12\r
+#define STM32_IRQ_UART5_PRIORITY            12\r
+#define STM32_IRQ_USART6_PRIORITY           12\r
+#define STM32_IRQ_UART7_PRIORITY            12\r
+#define STM32_IRQ_UART8_PRIORITY            12\r
+#define STM32_IRQ_LPUART1_PRIORITY          12\r
+\r
+/*\r
+ * ADC driver system settings.\r
+ */\r
+#define STM32_ADC_DUAL_MODE                 FALSE\r
+#define STM32_ADC_COMPACT_SAMPLES           FALSE\r
+#define STM32_ADC_USE_ADC12                 FALSE\r
+#define STM32_ADC_USE_ADC3                  TRUE\r
+#define STM32_ADC_ADC12_DMA_STREAM          STM32_DMA_STREAM_ID_ANY\r
+#define STM32_ADC_ADC3_BDMA_STREAM          STM32_BDMA_STREAM_ID_ANY\r
+#define STM32_ADC_ADC12_DMA_PRIORITY        2\r
+#define STM32_ADC_ADC3_DMA_PRIORITY         2\r
+#define STM32_ADC_ADC12_IRQ_PRIORITY        5\r
+#define STM32_ADC_ADC3_IRQ_PRIORITY         5\r
+#define STM32_ADC_ADC12_CLOCK_MODE          ADC_CCR_CKMODE_AHB_DIV4\r
+#define STM32_ADC_ADC3_CLOCK_MODE           ADC_CCR_CKMODE_ADCCK\r
+#define STM32_ADC_ADC3_PRESC                (5 << ADC_CCR_PRESC_Pos) // /10\r
+\r
+/*\r
+ * CAN driver system settings.\r
+ */\r
+#define STM32_CAN_USE_FDCAN1                FALSE\r
+#define STM32_CAN_USE_FDCAN2                FALSE\r
+\r
+/*\r
+ * DAC driver system settings.\r
+ */\r
+#define STM32_DAC_DUAL_MODE                 FALSE\r
+#define STM32_DAC_USE_DAC1_CH1              TRUE\r
+#define STM32_DAC_USE_DAC1_CH2              TRUE\r
+#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY     10\r
+#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY     10\r
+#define STM32_DAC_DAC1_CH1_DMA_PRIORITY     2\r
+#define STM32_DAC_DAC1_CH2_DMA_PRIORITY     2\r
+#define STM32_DAC_DAC1_CH1_DMA_STREAM       STM32_DMA_STREAM_ID_ANY\r
+#define STM32_DAC_DAC1_CH2_DMA_STREAM       STM32_DMA_STREAM_ID_ANY\r
+\r
+/*\r
+ * GPT driver system settings.\r
+ */\r
+#define STM32_GPT_USE_TIM1                  FALSE\r
+#define STM32_GPT_USE_TIM2                  FALSE\r
+#define STM32_GPT_USE_TIM3                  FALSE\r
+#define STM32_GPT_USE_TIM4                  FALSE\r
+#define STM32_GPT_USE_TIM5                  FALSE\r
+#define STM32_GPT_USE_TIM6                  TRUE\r
+#define STM32_GPT_USE_TIM7                  FALSE\r
+#define STM32_GPT_USE_TIM8                  FALSE\r
+#define STM32_GPT_USE_TIM12                 FALSE\r
+#define STM32_GPT_USE_TIM13                 FALSE\r
+#define STM32_GPT_USE_TIM14                 FALSE\r
+#define STM32_GPT_USE_TIM15                 FALSE\r
+#define STM32_GPT_USE_TIM16                 FALSE\r
+#define STM32_GPT_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * I2C driver system settings.\r
+ */\r
+#define STM32_I2C_USE_I2C1                  FALSE\r
+#define STM32_I2C_USE_I2C2                  FALSE\r
+#define STM32_I2C_USE_I2C3                  FALSE\r
+#define STM32_I2C_USE_I2C4                  FALSE\r
+#define STM32_I2C_BUSY_TIMEOUT              50\r
+#define STM32_I2C_I2C1_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C1_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C2_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C2_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C3_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C3_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C4_RX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C4_TX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
+#define STM32_I2C_I2C1_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C2_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C3_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C4_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C1_DMA_PRIORITY         3\r
+#define STM32_I2C_I2C2_DMA_PRIORITY         3\r
+#define STM32_I2C_I2C3_DMA_PRIORITY         3\r
+#define STM32_I2C_I2C4_DMA_PRIORITY         3\r
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * ICU driver system settings.\r
+ */\r
+#define STM32_ICU_USE_TIM1                  FALSE\r
+#define STM32_ICU_USE_TIM2                  FALSE\r
+#define STM32_ICU_USE_TIM3                  FALSE\r
+#define STM32_ICU_USE_TIM4                  FALSE\r
+#define STM32_ICU_USE_TIM5                  FALSE\r
+#define STM32_ICU_USE_TIM8                  FALSE\r
+#define STM32_ICU_USE_TIM12                 FALSE\r
+#define STM32_ICU_USE_TIM13                 FALSE\r
+#define STM32_ICU_USE_TIM14                 FALSE\r
+#define STM32_ICU_USE_TIM15                 FALSE\r
+#define STM32_ICU_USE_TIM16                 FALSE\r
+#define STM32_ICU_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * MAC driver system settings.\r
+ */\r
+#define STM32_MAC_TRANSMIT_BUFFERS          2\r
+#define STM32_MAC_RECEIVE_BUFFERS           4\r
+#define STM32_MAC_BUFFERS_SIZE              1522\r
+#define STM32_MAC_PHY_TIMEOUT               100\r
+#define STM32_MAC_ETH1_CHANGE_PHY_STATE     TRUE\r
+#define STM32_MAC_ETH1_IRQ_PRIORITY         13\r
+#define STM32_MAC_IP_CHECKSUM_OFFLOAD       0\r
+\r
+/*\r
+ * PWM driver system settings.\r
+ */\r
+#define STM32_PWM_USE_ADVANCED              FALSE\r
+#define STM32_PWM_USE_TIM1                  FALSE\r
+#define STM32_PWM_USE_TIM2                  FALSE\r
+#define STM32_PWM_USE_TIM3                  FALSE\r
+#define STM32_PWM_USE_TIM4                  FALSE\r
+#define STM32_PWM_USE_TIM5                  FALSE\r
+#define STM32_PWM_USE_TIM8                  FALSE\r
+#define STM32_PWM_USE_TIM12                 FALSE\r
+#define STM32_PWM_USE_TIM13                 FALSE\r
+#define STM32_PWM_USE_TIM14                 FALSE\r
+#define STM32_PWM_USE_TIM15                 FALSE\r
+#define STM32_PWM_USE_TIM16                 FALSE\r
+#define STM32_PWM_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * RTC driver system settings.\r
+ */\r
+#define STM32_RTC_PRESA_VALUE               32\r
+#define STM32_RTC_PRESS_VALUE               1024\r
+#define STM32_RTC_CR_INIT                   0\r
+#define STM32_RTC_TAMPCR_INIT               0\r
+\r
+/*\r
+ * SDC driver system settings.\r
+ */\r
+#define STM32_SDC_USE_SDMMC1                FALSE\r
+#define STM32_SDC_USE_SDMMC2                FALSE\r
+#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT   TRUE\r
+#define STM32_SDC_SDMMC_WRITE_TIMEOUT       1000000\r
+#define STM32_SDC_SDMMC_READ_TIMEOUT        1000000\r
+#define STM32_SDC_SDMMC_CLOCK_DELAY         10\r
+#define STM32_SDC_SDMMC_PWRSAV              TRUE\r
+\r
+/*\r
+ * SERIAL driver system settings.\r
+ */\r
+#define STM32_SERIAL_USE_USART1             FALSE\r
+#define STM32_SERIAL_USE_USART2             FALSE\r
+#define STM32_SERIAL_USE_USART3             FALSE\r
+#define STM32_SERIAL_USE_UART4              FALSE\r
+#define STM32_SERIAL_USE_UART5              FALSE\r
+#define STM32_SERIAL_USE_USART6             FALSE\r
+#define STM32_SERIAL_USE_UART7              FALSE\r
+#define STM32_SERIAL_USE_UART8              FALSE\r
+\r
+/*\r
+ * SPI driver system settings.\r
+ */\r
+#define STM32_SPI_USE_SPI1                  FALSE\r
+#define STM32_SPI_USE_SPI2                  FALSE\r
+#define STM32_SPI_USE_SPI3                  FALSE\r
+#define STM32_SPI_USE_SPI4                  FALSE\r
+#define STM32_SPI_USE_SPI5                  FALSE\r
+#define STM32_SPI_USE_SPI6                  FALSE\r
+#define STM32_SPI_SPI1_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI1_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI2_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI2_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI3_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI3_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI4_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI4_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI5_RX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI5_TX_DMA_STREAM        STM32_DMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI6_RX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI6_TX_BDMA_STREAM       STM32_BDMA_STREAM_ID_ANY\r
+#define STM32_SPI_SPI1_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI2_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI3_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI4_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI5_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI6_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI1_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI2_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI3_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI4_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI5_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI6_IRQ_PRIORITY         10\r
+#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * ST driver system settings.\r
+ */\r
+#define STM32_ST_IRQ_PRIORITY               8\r
+#define STM32_ST_USE_TIMER                  2\r
+\r
+/*\r
+ * TRNG driver system settings.\r
+ */\r
+#define STM32_TRNG_USE_RNG1                 FALSE\r
+\r
+/*\r
+ * UART driver system settings.\r
+ */\r
+#define STM32_UART_USE_USART1               FALSE\r
+#define STM32_UART_USE_USART2               FALSE\r
+#define STM32_UART_USE_USART3               FALSE\r
+#define STM32_UART_USE_UART4                FALSE\r
+#define STM32_UART_USE_UART5                FALSE\r
+#define STM32_UART_USE_USART6               FALSE\r
+#define STM32_UART_USE_UART7                FALSE\r
+#define STM32_UART_USE_UART8                FALSE\r
+#define STM32_UART_USART1_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART1_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART2_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART2_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART3_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART3_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART4_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART4_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART5_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART5_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART6_RX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART6_TX_DMA_STREAM     STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART7_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART7_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART8_RX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_UART8_TX_DMA_STREAM      STM32_DMA_STREAM_ID_ANY\r
+#define STM32_UART_USART1_DMA_PRIORITY      0\r
+#define STM32_UART_USART2_DMA_PRIORITY      0\r
+#define STM32_UART_USART3_DMA_PRIORITY      0\r
+#define STM32_UART_UART4_DMA_PRIORITY       0\r
+#define STM32_UART_UART5_DMA_PRIORITY       0\r
+#define STM32_UART_USART6_DMA_PRIORITY      0\r
+#define STM32_UART_UART7_DMA_PRIORITY       0\r
+#define STM32_UART_UART8_DMA_PRIORITY       0\r
+#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * USB driver system settings.\r
+ */\r
+#define STM32_USB_USE_OTG1                  FALSE\r
+#define STM32_USB_USE_OTG2                  TRUE\r
+#define STM32_USB_OTG1_IRQ_PRIORITY         14\r
+#define STM32_USB_OTG2_IRQ_PRIORITY         14\r
+#define STM32_USB_OTG1_RX_FIFO_SIZE         512\r
+#define STM32_USB_OTG2_RX_FIFO_SIZE         1024\r
+#define STM32_USB_HOST_WAKEUP_DURATION      2\r
+\r
+/*\r
+ * WDG driver system settings.\r
+ */\r
+#define STM32_WDG_USE_IWDG                  FALSE\r
+\r
+/*\r
+ * WSPI driver system settings.\r
+ */\r
+#define STM32_WSPI_USE_QUADSPI1             FALSE\r
+#define STM32_WSPI_QUADSPI1_PRESCALER_VALUE 1\r
+#define STM32_WSPI_QUADSPI1_MDMA_CHANNEL    STM32_MDMA_CHANNEL_ID_ANY\r
+#define STM32_WSPI_QUADSPI1_MDMA_PRIORITY   1\r
+#define STM32_WSPI_MDMA_ERROR_HOOK(qspip)   osalSysHalt("MDMA failure")\r
+\r
+#endif /* MCUCONF_H */\r
diff --git a/cfg/mcuconf_l4.h b/cfg/mcuconf_l4.h
new file mode 100644 (file)
index 0000000..438e0be
--- /dev/null
@@ -0,0 +1,360 @@
+/*\r
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+        http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+*/\r
+\r
+/*\r
+ * STM32L4xx drivers configuration.\r
+ * The following settings override the default settings present in\r
+ * the various device driver implementation headers.\r
+ * Note that the settings for each driver only have effect if the whole\r
+ * driver is enabled in halconf.h.\r
+ *\r
+ * IRQ priorities:\r
+ * 15...0       Lowest...Highest.\r
+ *\r
+ * DMA priorities:\r
+ * 0...3        Lowest...Highest.\r
+ */\r
+\r
+#ifndef MCUCONF_H\r
+#define MCUCONF_H\r
+\r
+#define STM32L4xx_MCUCONF\r
+#define STM32L476_MCUCONF\r
+//#define STM32L432_MCUCONF\r
+\r
+/*\r
+ * HAL driver system settings.\r
+ */\r
+#define STM32_NO_INIT                       FALSE\r
+#define STM32_VOS                           STM32_VOS_RANGE1\r
+#define STM32_PVD_ENABLE                    FALSE\r
+#define STM32_PLS                           STM32_PLS_LEV0\r
+#define STM32_HSI16_ENABLED                 FALSE\r
+#define STM32_LSI_ENABLED                   TRUE\r
+#define STM32_HSE_ENABLED                   FALSE\r
+#define STM32_LSE_ENABLED                   FALSE\r
+#define STM32_MSIPLL_ENABLED                FALSE\r
+#define STM32_MSIRANGE                      STM32_MSIRANGE_8M\r
+#define STM32_MSISRANGE                     STM32_MSISRANGE_4M\r
+#define STM32_SW                            STM32_SW_PLL\r
+#define STM32_PLLSRC                        STM32_PLLSRC_MSI\r
+#define STM32_PLLM_VALUE                    2\r
+#define STM32_PLLN_VALUE                    72\r
+#define STM32_PLLP_VALUE                    7\r
+#define STM32_PLLQ_VALUE                    6\r
+#define STM32_PLLR_VALUE                    4\r
+#define STM32_HPRE                          STM32_HPRE_DIV1\r
+#define STM32_PPRE1                         STM32_PPRE1_DIV1\r
+#define STM32_PPRE2                         STM32_PPRE2_DIV1\r
+#define STM32_STOPWUCK                      STM32_STOPWUCK_MSI\r
+#define STM32_MCOSEL                        STM32_MCOSEL_NOCLOCK\r
+#define STM32_MCOPRE                        STM32_MCOPRE_DIV1\r
+#define STM32_LSCOSEL                       STM32_LSCOSEL_NOCLOCK\r
+#define STM32_PLLSAI1N_VALUE                24\r
+#define STM32_PLLSAI1P_VALUE                7\r
+#define STM32_PLLSAI1Q_VALUE                2\r
+#define STM32_PLLSAI1R_VALUE                4\r
+#define STM32_PLLSAI2N_VALUE                24\r
+#define STM32_PLLSAI2P_VALUE                7\r
+#define STM32_PLLSAI2R_VALUE                8\r
+\r
+/*\r
+ * Peripherals clock sources.\r
+ */\r
+#define STM32_USART1SEL                     STM32_USART1SEL_SYSCLK\r
+#define STM32_USART2SEL                     STM32_USART2SEL_SYSCLK\r
+#define STM32_USART3SEL                     STM32_USART3SEL_SYSCLK\r
+#define STM32_UART4SEL                      STM32_UART4SEL_SYSCLK\r
+#define STM32_UART5SEL                      STM32_UART5SEL_SYSCLK\r
+#define STM32_LPUART1SEL                    STM32_LPUART1SEL_SYSCLK\r
+#define STM32_I2C1SEL                       STM32_I2C1SEL_SYSCLK\r
+#define STM32_I2C2SEL                       STM32_I2C2SEL_SYSCLK\r
+#define STM32_I2C3SEL                       STM32_I2C3SEL_SYSCLK\r
+#define STM32_LPTIM1SEL                     STM32_LPTIM1SEL_PCLK1\r
+#define STM32_LPTIM2SEL                     STM32_LPTIM2SEL_PCLK1\r
+#define STM32_SAI1SEL                       STM32_SAI1SEL_OFF\r
+#define STM32_SAI2SEL                       STM32_SAI2SEL_OFF\r
+#define STM32_CLK48SEL                      STM32_CLK48SEL_PLLSAI1\r
+#define STM32_ADCSEL                        STM32_ADCSEL_PLLSAI2\r
+#define STM32_SWPMI1SEL                     STM32_SWPMI1SEL_PCLK1\r
+#define STM32_DFSDMSEL                      STM32_DFSDMSEL_PCLK2\r
+#define STM32_RTCSEL                        STM32_RTCSEL_LSI\r
+\r
+/*\r
+ * IRQ system settings.\r
+ */\r
+#define STM32_IRQ_EXTI0_PRIORITY            6\r
+#define STM32_IRQ_EXTI1_PRIORITY            6\r
+#define STM32_IRQ_EXTI2_PRIORITY            6\r
+#define STM32_IRQ_EXTI3_PRIORITY            6\r
+#define STM32_IRQ_EXTI4_PRIORITY            6\r
+#define STM32_IRQ_EXTI5_9_PRIORITY          6\r
+#define STM32_IRQ_EXTI10_15_PRIORITY        6\r
+#define STM32_IRQ_EXTI1635_38_PRIORITY      6\r
+#define STM32_IRQ_EXTI18_PRIORITY           6\r
+#define STM32_IRQ_EXTI19_PRIORITY           6\r
+#define STM32_IRQ_EXTI20_PRIORITY           6\r
+#define STM32_IRQ_EXTI21_22_PRIORITY        15\r
+\r
+#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY   7\r
+#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY    7\r
+#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7\r
+#define STM32_IRQ_TIM1_CC_PRIORITY          7\r
+#define STM32_IRQ_TIM2_PRIORITY             7\r
+#define STM32_IRQ_TIM3_PRIORITY             7\r
+#define STM32_IRQ_TIM4_PRIORITY             7\r
+#define STM32_IRQ_TIM5_PRIORITY             7\r
+#define STM32_IRQ_TIM6_PRIORITY             7\r
+#define STM32_IRQ_TIM7_PRIORITY             7\r
+#define STM32_IRQ_TIM8_UP_PRIORITY          7\r
+#define STM32_IRQ_TIM8_CC_PRIORITY          7\r
+\r
+#define STM32_IRQ_USART1_PRIORITY           12\r
+#define STM32_IRQ_USART2_PRIORITY           12\r
+#define STM32_IRQ_USART3_PRIORITY           12\r
+#define STM32_IRQ_UART4_PRIORITY            12\r
+#define STM32_IRQ_UART5_PRIORITY            12\r
+#define STM32_IRQ_LPUART1_PRIORITY          12\r
+\r
+/*\r
+ * ADC driver system settings.\r
+ */\r
+#define STM32_ADC_DUAL_MODE                 FALSE\r
+#define STM32_ADC_COMPACT_SAMPLES           FALSE\r
+#define STM32_ADC_USE_ADC1                  TRUE\r
+#define STM32_ADC_USE_ADC2                  FALSE\r
+#define STM32_ADC_USE_ADC3                  TRUE\r
+#define STM32_ADC_ADC1_DMA_STREAM           STM32_DMA_STREAM_ID(1, 1)\r
+#define STM32_ADC_ADC2_DMA_STREAM           STM32_DMA_STREAM_ID(1, 2)\r
+#define STM32_ADC_ADC3_DMA_STREAM           STM32_DMA_STREAM_ID(1, 3)\r
+#define STM32_ADC_ADC1_DMA_PRIORITY         2\r
+#define STM32_ADC_ADC2_DMA_PRIORITY         2\r
+#define STM32_ADC_ADC3_DMA_PRIORITY         2\r
+#define STM32_ADC_ADC12_IRQ_PRIORITY        5\r
+#define STM32_ADC_ADC3_IRQ_PRIORITY         5\r
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY     5\r
+#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY     5\r
+#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY     5\r
+#define STM32_ADC_ADC123_CLOCK_MODE         ADC_CCR_CKMODE_ADCCK\r
+#define STM32_ADC_ADC123_PRESC              ADC_CCR_PRESC_DIV10\r
+\r
+//#define ADC123_PRESC_VALUE 1\r
+\r
+/*\r
+ * CAN driver system settings.\r
+ */\r
+#define STM32_CAN_USE_CAN1                  FALSE\r
+#define STM32_CAN_CAN1_IRQ_PRIORITY         11\r
+\r
+/*\r
+ * DAC driver system settings.\r
+ */\r
+#define STM32_DAC_DUAL_MODE                 FALSE\r
+#define STM32_DAC_USE_DAC1_CH1              TRUE\r
+#define STM32_DAC_USE_DAC1_CH2              TRUE\r
+#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY     10\r
+#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY     10\r
+#define STM32_DAC_DAC1_CH1_DMA_PRIORITY     2\r
+#define STM32_DAC_DAC1_CH2_DMA_PRIORITY     2\r
+#define STM32_DAC_DAC1_CH1_DMA_STREAM       STM32_DMA_STREAM_ID(2, 4)\r
+#define STM32_DAC_DAC1_CH2_DMA_STREAM       STM32_DMA_STREAM_ID(1, 4)\r
+\r
+/*\r
+ * GPT driver system settings.\r
+ */\r
+#define STM32_GPT_USE_TIM1                  FALSE\r
+#define STM32_GPT_USE_TIM2                  FALSE\r
+#define STM32_GPT_USE_TIM3                  FALSE\r
+#define STM32_GPT_USE_TIM4                  FALSE\r
+#define STM32_GPT_USE_TIM5                  FALSE\r
+#define STM32_GPT_USE_TIM6                  TRUE\r
+#define STM32_GPT_USE_TIM7                  TRUE\r
+#define STM32_GPT_USE_TIM8                  FALSE\r
+#define STM32_GPT_USE_TIM15                 FALSE\r
+#define STM32_GPT_USE_TIM16                 FALSE\r
+#define STM32_GPT_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * I2C driver system settings.\r
+ */\r
+#define STM32_I2C_USE_I2C1                  FALSE\r
+#define STM32_I2C_USE_I2C2                  FALSE\r
+#define STM32_I2C_USE_I2C3                  FALSE\r
+#define STM32_I2C_BUSY_TIMEOUT              50\r
+#define STM32_I2C_I2C1_RX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 7)\r
+#define STM32_I2C_I2C1_TX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 6)\r
+#define STM32_I2C_I2C2_RX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 5)\r
+#define STM32_I2C_I2C2_TX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 4)\r
+#define STM32_I2C_I2C3_RX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 3)\r
+#define STM32_I2C_I2C3_TX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 2)\r
+#define STM32_I2C_I2C1_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C2_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C3_IRQ_PRIORITY         5\r
+#define STM32_I2C_I2C1_DMA_PRIORITY         3\r
+#define STM32_I2C_I2C2_DMA_PRIORITY         3\r
+#define STM32_I2C_I2C3_DMA_PRIORITY         3\r
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * ICU driver system settings.\r
+ */\r
+#define STM32_ICU_USE_TIM1                  FALSE\r
+#define STM32_ICU_USE_TIM2                  FALSE\r
+#define STM32_ICU_USE_TIM3                  FALSE\r
+#define STM32_ICU_USE_TIM4                  FALSE\r
+#define STM32_ICU_USE_TIM5                  FALSE\r
+#define STM32_ICU_USE_TIM8                  FALSE\r
+#define STM32_ICU_USE_TIM15                 FALSE\r
+#define STM32_ICU_USE_TIM16                 FALSE\r
+#define STM32_ICU_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * PWM driver system settings.\r
+ */\r
+#define STM32_PWM_USE_ADVANCED              FALSE\r
+#define STM32_PWM_USE_TIM1                  FALSE\r
+#define STM32_PWM_USE_TIM2                  FALSE\r
+#define STM32_PWM_USE_TIM3                  FALSE\r
+#define STM32_PWM_USE_TIM4                  FALSE\r
+#define STM32_PWM_USE_TIM5                  FALSE\r
+#define STM32_PWM_USE_TIM8                  FALSE\r
+#define STM32_PWM_USE_TIM15                 FALSE\r
+#define STM32_PWM_USE_TIM16                 FALSE\r
+#define STM32_PWM_USE_TIM17                 FALSE\r
+\r
+/*\r
+ * RTC driver system settings.\r
+ */\r
+#define STM32_RTC_PRESA_VALUE               32\r
+#define STM32_RTC_PRESS_VALUE               1024\r
+#define STM32_RTC_CR_INIT                   0\r
+#define STM32_RTC_TAMPCR_INIT               0\r
+\r
+/*\r
+ * SDC driver system settings.\r
+ */\r
+#define STM32_SDC_USE_SDMMC1                FALSE\r
+#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT   TRUE\r
+#define STM32_SDC_SDMMC_WRITE_TIMEOUT       1000\r
+#define STM32_SDC_SDMMC_READ_TIMEOUT        1000\r
+#define STM32_SDC_SDMMC_CLOCK_DELAY         10\r
+#define STM32_SDC_SDMMC1_DMA_PRIORITY       3\r
+#define STM32_SDC_SDMMC1_IRQ_PRIORITY       9\r
+#define STM32_SDC_SDMMC1_DMA_STREAM         STM32_DMA_STREAM_ID(2, 4)\r
+\r
+/*\r
+ * SERIAL driver system settings.\r
+ */\r
+#define STM32_SERIAL_USE_USART1             FALSE\r
+#define STM32_SERIAL_USE_USART2             TRUE\r
+#define STM32_SERIAL_USE_USART3             FALSE\r
+#define STM32_SERIAL_USE_UART4              FALSE\r
+#define STM32_SERIAL_USE_UART5              FALSE\r
+#define STM32_SERIAL_USE_LPUART1            FALSE\r
+#define STM32_SERIAL_USART1_PRIORITY        12\r
+#define STM32_SERIAL_USART2_PRIORITY        12\r
+#define STM32_SERIAL_USART3_PRIORITY        12\r
+#define STM32_SERIAL_UART4_PRIORITY         12\r
+#define STM32_SERIAL_UART5_PRIORITY         12\r
+#define STM32_SERIAL_LPUART1_PRIORITY       12\r
+\r
+/*\r
+ * SPI driver system settings.\r
+ */\r
+#define STM32_SPI_USE_SPI1                  FALSE\r
+#define STM32_SPI_USE_SPI2                  FALSE\r
+#define STM32_SPI_USE_SPI3                  FALSE\r
+#define STM32_SPI_SPI1_RX_DMA_STREAM        STM32_DMA_STREAM_ID(2, 3)\r
+#define STM32_SPI_SPI1_TX_DMA_STREAM        STM32_DMA_STREAM_ID(2, 4)\r
+#define STM32_SPI_SPI2_RX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 4)\r
+#define STM32_SPI_SPI2_TX_DMA_STREAM        STM32_DMA_STREAM_ID(1, 5)\r
+#define STM32_SPI_SPI3_RX_DMA_STREAM        STM32_DMA_STREAM_ID(2, 1)\r
+#define STM32_SPI_SPI3_TX_DMA_STREAM        STM32_DMA_STREAM_ID(2, 2)\r
+#define STM32_SPI_SPI1_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI2_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI3_DMA_PRIORITY         1\r
+#define STM32_SPI_SPI1_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI2_IRQ_PRIORITY         10\r
+#define STM32_SPI_SPI3_IRQ_PRIORITY         10\r
+#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * ST driver system settings.\r
+ */\r
+#define STM32_ST_IRQ_PRIORITY               8\r
+#define STM32_ST_USE_TIMER                  2\r
+\r
+/*\r
+ * TRNG driver system settings.\r
+ */\r
+#define STM32_TRNG_USE_RNG1                 FALSE\r
+\r
+/*\r
+ * UART driver system settings.\r
+ */\r
+#define STM32_UART_USE_USART1               FALSE\r
+#define STM32_UART_USE_USART2               FALSE\r
+#define STM32_UART_USE_USART3               FALSE\r
+#define STM32_UART_USE_UART4                FALSE\r
+#define STM32_UART_USE_UART5                FALSE\r
+#define STM32_UART_USART1_RX_DMA_STREAM     STM32_DMA_STREAM_ID(2, 7)\r
+#define STM32_UART_USART1_TX_DMA_STREAM     STM32_DMA_STREAM_ID(2, 6)\r
+#define STM32_UART_USART2_RX_DMA_STREAM     STM32_DMA_STREAM_ID(1, 6)\r
+#define STM32_UART_USART2_TX_DMA_STREAM     STM32_DMA_STREAM_ID(1, 7)\r
+#define STM32_UART_USART3_RX_DMA_STREAM     STM32_DMA_STREAM_ID(1, 3)\r
+#define STM32_UART_USART3_TX_DMA_STREAM     STM32_DMA_STREAM_ID(1, 2)\r
+#define STM32_UART_UART4_RX_DMA_STREAM      STM32_DMA_STREAM_ID(2, 5)\r
+#define STM32_UART_UART4_TX_DMA_STREAM      STM32_DMA_STREAM_ID(2, 3)\r
+#define STM32_UART_UART5_RX_DMA_STREAM      STM32_DMA_STREAM_ID(2, 2)\r
+#define STM32_UART_UART5_TX_DMA_STREAM      STM32_DMA_STREAM_ID(2, 1)\r
+#define STM32_UART_USART1_IRQ_PRIORITY      12\r
+#define STM32_UART_USART2_IRQ_PRIORITY      12\r
+#define STM32_UART_USART3_IRQ_PRIORITY      12\r
+#define STM32_UART_UART4_IRQ_PRIORITY       12\r
+#define STM32_UART_UART5_IRQ_PRIORITY       12\r
+#define STM32_UART_USART1_DMA_PRIORITY      0\r
+#define STM32_UART_USART2_DMA_PRIORITY      0\r
+#define STM32_UART_USART3_DMA_PRIORITY      0\r
+#define STM32_UART_UART4_DMA_PRIORITY       0\r
+#define STM32_UART_UART5_DMA_PRIORITY       0\r
+#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")\r
+\r
+/*\r
+ * USB driver system settings.\r
+ */\r
+#ifdef STM32L476_MCUCONF\r
+#define STM32_USB_USE_OTG1                  TRUE\r
+#define STM32_USB_OTG1_IRQ_PRIORITY         14\r
+#define STM32_USB_OTG1_RX_FIFO_SIZE         512\r
+#else\r
+#define STM32_USB_USE_USB1                  TRUE\r
+#define STM32_USB_LOW_POWER_ON_SUSPEND      FALSE\r
+#define STM32_USB_USB1_HP_IRQ_PRIORITY      13\r
+#define STM32_USB_USB1_LP_IRQ_PRIORITY      14\r
+#endif // STM32L476_MCUCONF\r
+\r
+/*\r
+ * WDG driver system settings.\r
+ */\r
+#define STM32_WDG_USE_IWDG                  FALSE\r
+\r
+/*\r
+ * WSPI driver system settings.\r
+ */\r
+#define STM32_WSPI_USE_QUADSPI1             FALSE\r
+#define STM32_WSPI_QUADSPI1_DMA_STREAM      STM32_DMA_STREAM_ID(2, 7)\r
+\r
+#endif /* MCUCONF_H */\r
index 5ea18af3016c0ee59c0345816d2d1ad35c7f09f9..2293c71a908016082f0e3a204f7b79056d2ddc8e 100644 (file)
@@ -31,8 +31,16 @@ namespace stmdsp
     {
         if (m_serial.isOpen()) {
            m_serial.write("i");
-           if (m_serial.read(6) != "stmdsp")
+           if (auto id = m_serial.read(7); id.starts_with("stmdsp")) {
+                if (id.back() == 'h')
+                    m_platform = platform::H7;
+                else if (id.back() == 'l')
+                    m_platform = platform::L4;
+                else
+                    m_serial.close();
+           } else {
                m_serial.close();
+           }
         }
     }
 
index a22a55da16a52f5b783bf4e2927cb5d38c691e96..d56a1ab5956e8d521bfb98e67bff967301d95d37 100644 (file)
@@ -39,6 +39,13 @@ namespace stmdsp
     using adcsample_t = uint16_t;
     using dacsample_t = uint16_t;
 
+    enum class platform {
+        Unknown,
+        H7,
+        L4,
+        G4
+    };
+
     class device
     {
     public:
@@ -52,8 +59,7 @@ namespace stmdsp
             return m_serial.isOpen();
         }
 
-        //std::vector<adcsample_t> sample(unsigned long int count = 1);
-
+        auto get_platform() const { return m_platform; }
         void continuous_set_buffer_size(unsigned int size);
         unsigned int get_buffer_size() const { return m_buffer_size; }
         void set_sample_rate(unsigned int id);
@@ -76,6 +82,7 @@ namespace stmdsp
 
     private:
         serial::Serial m_serial;
+        platform m_platform = platform::Unknown;
         unsigned int m_buffer_size = SAMPLES_MAX;
         bool m_is_siggening = false;
     };
index e5f0d4d3cfed17c8e377ba2de0bea2ac5bbd3dfd..d020bef8f70396fd28cbd0c1c369d7681c310c8a 100644 (file)
@@ -46,10 +46,10 @@ static const std::array<unsigned int, 6> srateNums {
     96000
 };
 
-static const char *makefile_text = R"make(
+static const char *makefile_text_h7 = R"make(
 all:
        @arm-none-eabi-g++ -x c++ -Os -fno-exceptions -fno-rtti \
-                          -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -mtune=cortex-m7 \
+                       -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -mtune=cortex-m7 \
                           -nostartfiles \
                           -Wl,-Ttext-segment=0x00000000 -Wl,-zmax-page-size=512 -Wl,-eprocess_data_entry \
                           $0 -o $0.o
@@ -61,8 +61,23 @@ all:
                            $0.o
        arm-none-eabi-size $0.o
 )make";
+static const char *makefile_text_l4 = R"make(
+all:
+       @arm-none-eabi-g++ -x c++ -Os -fno-exceptions -fno-rtti \
+                          -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 \
+                          -nostartfiles \
+                          -Wl,-Ttext-segment=0x10000000 -Wl,-zmax-page-size=512 -Wl,-eprocess_data_entry \
+                          $0 -o $0.o
+       @cp $0.o $0.orig.o
+       @arm-none-eabi-strip -s -S --strip-unneeded $0.o
+       @arm-none-eabi-objcopy --remove-section .ARM.attributes \
+                           --remove-section .comment \
+                           --remove-section .noinit \
+                           $0.o
+       arm-none-eabi-size $0.o
+)make";
 
-static const char *file_header = R"cpp(
+static const char *file_header_h7 = R"cpp(
 #include <cstdint>
 
 using adcsample_t = uint16_t;
@@ -103,18 +118,63 @@ return 0;
 }
 __attribute__((naked))
 auto sqrt(double x) {
-asm("vmov.f64 r1, r2, d0;"
-       "mov r0, #3;"
+asm("vsqrt.f64 d0, d0; bx lr");
+return 0;
+}
+
+// End stmdspgui header code
+
+)cpp";
+static const char *file_header_l4 = R"cpp(
+#include <cstdint>
+
+using adcsample_t = uint16_t;
+constexpr unsigned int SIZE = $0;
+adcsample_t *process_data(adcsample_t *samples, unsigned int size);
+extern "C" void process_data_entry()
+{
+    ((void (*)())process_data)();
+}
+
+constexpr float PI = 3.14159265358979L;
+__attribute__((naked))
+auto sin(float x) {
+asm("vmov.f32 r1, s0;"
+    "eor r0, r0;"
+    "svc 1;"
+    "vmov.f32 s0, r1;"
+    "bx lr");
+return 0;
+}
+__attribute__((naked))
+auto cos(float x) {
+asm("vmov.f32 r1, s0;"
+       "mov r0, #1;"
        "svc 1;"
-       "vmov.f64 d0, r1, r2;"
+       "vmov.f32 s0, r1;"
+       "bx lr");
+return 0;
+}
+__attribute__((naked))
+auto tan(double x) {
+asm("vmov.f32 r1, s0;"
+       "mov r0, #2;"
+       "svc 1;"
+       "vmov.f32 s0, r1;"
        "bx lr");
 return 0;
 }
+__attribute__((naked))
+auto sqrt(float) {
+asm("vsqrt.f32 s0, s0; bx lr");
+return 0;
+}
 
 // End stmdspgui header code
 
 )cpp";
 
+
 static const char *file_content = 
 R"cpp(adcsample_t *process_data(adcsample_t *samples, unsigned int size)
 {
@@ -416,14 +476,16 @@ wxString MainFrame::compileEditorCode()
         m_temp_file_name = wxFileName::CreateTempFileName("stmdspgui");
 
     wxFile file (m_temp_file_name, wxFile::write);
-    wxString file_text (file_header);
+    wxString file_text (m_device->get_platform() == stmdsp::platform::L4 ? file_header_l4
+                                                                         : file_header_h7);
     file_text.Replace("$0", std::to_string(m_device ? m_device->get_buffer_size()
                                                     : stmdsp::SAMPLES_MAX));
     file.Write(wxString(file_text) + m_text_editor->GetText());
     file.Close();
 
     wxFile makefile (m_temp_file_name + "make", wxFile::write);
-    wxString make_text (makefile_text);
+    wxString make_text (m_device->get_platform() == stmdsp::platform::L4 ? makefile_text_l4
+                                                                         : makefile_text_h7);
     make_text.Replace("$0", m_temp_file_name);
     makefile.Write(make_text);
     makefile.Close();
index b0c0312d6ce7ddcc7d21350f2cfb3052545a36c3..b9fe34c99cfbd79822d2cf041817496dd4170528 100644 (file)
 
 #include "adc.hpp"
 
+#if defined(TARGET_PLATFORM_L4)
+ADCDriver *ADC::m_driver = &ADCD1;
+ADCDriver *ADC::m_driver2 = &ADCD3;
+#else
 ADCDriver *ADC::m_driver = &ADCD3;
+//ADCDriver *ADC::m_driver2 = &ADCD1; // TODO
+#endif
 
 const ADCConfig ADC::m_config = {
     .difsel = 0,
+#if defined(TARGET_PLATFORM_H7)
     .calibration = 0,
+#endif
+};
+
+const ADCConfig ADC::m_config2 = {
+    .difsel = 0,
+#if defined(TARGET_PLATFORM_H7)
+    .calibration = 0,
+#endif
 };
 
 ADCConversionGroup ADC::m_group_config = {
@@ -25,11 +40,19 @@ ADCConversionGroup ADC::m_group_config = {
     .error_cb = nullptr,
     .cfgr = ADC_CFGR_EXTEN_RISING | ADC_CFGR_EXTSEL_SRC(13),  /* TIM6_TRGO */
     .cfgr2 = ADC_CFGR2_ROVSE | ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSS_0, // Oversampling 2x
+#if defined(TARGET_PLATFORM_H7)
     .ccr = 0,
     .pcsel = 0,
-    .ltr1 = 0, .htr1 = 0x0FFF,
-    .ltr2 = 0, .htr2 = 0x0FFF,
-    .ltr3 = 0, .htr3 = 0x0FFF,
+    .ltr1 = 0, .htr1 = 4095,
+    .ltr2 = 0, .htr2 = 4095,
+    .ltr3 = 0, .htr3 = 4095,
+#else
+    .tr1 = ADC_TR(0, 4095),
+    .tr2 = ADC_TR(0, 4095),
+    .tr3 = ADC_TR(0, 4095),
+    .awd2cr = 0,
+    .awd3cr = 0,
+#endif
     .smpr = {
         ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_12P5), 0
     },
@@ -39,54 +62,55 @@ ADCConversionGroup ADC::m_group_config = {
     },
 };
 
-std::array<std::array<uint32_t, 2>, 6> ADC::m_rate_presets = {{
-     // Rate   PLL N  PLL P
-    {/* 8k  */ 80,    20},
-    {/* 16k */ 80,    10},
-    {/* 20k */ 80,    8},
-    {/* 32k */ 80,    5},
-    {/* 48k */ 96,    4},
-    {/* 96k */ 288,   10}
-}};
+static bool readAltDone = false;
+static void readAltCallback(ADCDriver *)
+{
+    readAltDone = true;
+}
+ADCConversionGroup ADC::m_group_config2 = {
+    .circular = false,
+    .num_channels = 1,
+    .end_cb = readAltCallback,
+    .error_cb = nullptr,
+    .cfgr = ADC_CFGR_EXTEN_RISING | ADC_CFGR_EXTSEL_SRC(13),  /* TIM6_TRGO */
+    .cfgr2 = ADC_CFGR2_ROVSE | ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSS_0, // Oversampling 2x
+#if defined(TARGET_PLATFORM_H7)
+    .ccr = 0,
+    .pcsel = 0,
+    .ltr1 = 0, .htr1 = 4095,
+    .ltr2 = 0, .htr2 = 4095,
+    .ltr3 = 0, .htr3 = 4095,
+#else
+    .tr1 = ADC_TR(0, 4095),
+    .tr2 = ADC_TR(0, 4095),
+    .tr3 = ADC_TR(0, 4095),
+    .awd2cr = 0,
+    .awd3cr = 0,
+#endif
+    .smpr = {
+        ADC_SMPR1_SMP_AN1(ADC_SMPR_SMP_12P5), 0
+    },
+    .sqr = {
+        ADC_SQR1_SQ1_N(ADC_CHANNEL_IN1),
+        0, 0, 0
+    },
+};
 
 adcsample_t *ADC::m_current_buffer = nullptr;
 size_t ADC::m_current_buffer_size = 0;
 ADC::Operation ADC::m_operation = nullptr;
 
-//static const ADCConfig m_config2 = {};
-//ADCConversionGroup m_group_config2 = {
-//    .circular = false,
-//    .num_channels = 1,
-//    .end_cb = nullptr,
-//    .error_cb = nullptr,
-//    .cfgr = 0,
-//    .cfgr2 = 0,
-//    .ccr = 0,
-//    .pcsel = 0,
-//    .ltr1 = 0, .htr1 = 0x0FFF,
-//    .ltr2 = 0, .htr2 = 0x0FFF,
-//    .ltr3 = 0, .htr3 = 0x0FFF,
-//    .smpr = {
-//        ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_12P5), 0
-//    },
-//    .sqr = {
-//        ADC_SQR1_SQ1_N(ADC_CHANNEL_IN10),
-//        0, 0, 0
-//    },
-//};
-
 void ADC::begin()
 {
+#if defined(TARGET_PLATFORM_H7)
     palSetPadMode(GPIOF, 3, PAL_MODE_INPUT_ANALOG);
-
-    //palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG);
-    //adcStart(&ADCD1, &m_config2);
-    //adcsample_t val = 0;
-    //adcConvert(&ADCD1, &m_group_config2, &val, 1);
-    //adcStop(&ADCD1);
+#else
+    palSetPadMode(GPIOA, 0, PAL_MODE_INPUT_ANALOG); // Algorithm in
+    palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG); // Potentiometer 1
+#endif
 
     adcStart(m_driver, &m_config);
-    adcSTM32EnableVREF(m_driver);
+    adcStart(m_driver2, &m_config2);
 }
 
 void ADC::start(adcsample_t *buffer, size_t count, Operation operation)
@@ -109,8 +133,32 @@ void ADC::stop()
     m_operation = nullptr;
 }
 
+adcsample_t ADC::readAlt(unsigned int id)
+{
+    if (id != 0)
+        return 0;
+    static adcsample_t result[32] = {};
+    readAltDone = false;
+    adcStartConversion(m_driver2, &m_group_config2, result, 32);
+    while (!readAltDone)
+        ;
+    adcStopConversion(m_driver2);
+    return result[0];
+}
+
 void ADC::setRate(SClock::Rate rate)
 {
+#if defined(TARGET_PLATFORM_H7)
+    std::array<std::array<uint32_t, 2>, 6> m_rate_presets = {{
+         // Rate   PLL N  PLL P
+        {/* 8k  */ 80,    20},
+        {/* 16k */ 80,    10},
+        {/* 20k */ 80,    8},
+        {/* 32k */ 80,    5},
+        {/* 48k */ 96,    4},
+        {/* 96k */ 288,   10}
+    }};
+
     auto& preset = m_rate_presets[static_cast<unsigned int>(rate)];
     auto pllbits = (preset[0] << RCC_PLL2DIVR_N2_Pos) |
                    (preset[1] << RCC_PLL2DIVR_P2_Pos);
@@ -131,6 +179,33 @@ void ADC::setRate(SClock::Rate rate)
                                                         : ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_2P5);
 
     adcStart(m_driver, &m_config);
+#elif defined(TARGET_PLATFORM_L4)
+    std::array<std::array<uint32_t, 3>, 6> m_rate_presets = {{
+        //  Rate   PLLSAI2N  R  OVERSAMPLE
+        {/* 8k  */ 16,       3, 1},
+        {/* 16k */ 32,       3, 1},
+        {/* 20k */ 40,       3, 1},
+        {/* 32k */ 64,       3, 1},
+        {/* 48k */ 24,       3, 0},
+        {/* 96k */ 48,       3, 0}
+    }};
+
+    auto& preset = m_rate_presets[static_cast<int>(rate)];
+    auto pllnr = (preset[0] << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
+                 (preset[1] << RCC_PLLSAI2CFGR_PLLSAI2R_Pos);
+    bool oversample = preset[2] != 0;
+
+    // Adjust PLLSAI2
+    RCC->CR &= ~(RCC_CR_PLLSAI2ON);
+    while ((RCC->CR & RCC_CR_PLLSAI2RDY) == RCC_CR_PLLSAI2RDY);
+    RCC->PLLSAI2CFGR = (RCC->PLLSAI2CFGR & ~(RCC_PLLSAI2CFGR_PLLSAI2N_Msk | RCC_PLLSAI2CFGR_PLLSAI2R_Msk)) | pllnr;
+    RCC->CR |= RCC_CR_PLLSAI2ON;
+    while ((RCC->CR & RCC_CR_PLLSAI2RDY) != RCC_CR_PLLSAI2RDY);
+
+    // Set 2x oversampling
+    m_group_config.cfgr2 = oversample ? ADC_CFGR2_ROVSE | ADC_CFGR2_OVSR_0 | ADC_CFGR2_OVSS_1 : 0;
+    m_group_config2.cfgr2 = oversample ? ADC_CFGR2_ROVSE | ADC_CFGR2_OVSR_0 | ADC_CFGR2_OVSS_1 : 0;
+#endif
 }
 
 void ADC::setOperation(ADC::Operation operation)
index d9a435a717a8edef4971e8061eb92f48e5a3fecc..24a7fff2b82471d3745c3fcb35832c3bbb377b87 100644 (file)
@@ -27,16 +27,19 @@ public:
     static void start(adcsample_t *buffer, size_t count, Operation operation);
     static void stop();
 
+    static adcsample_t readAlt(unsigned int id);
+
     static void setRate(SClock::Rate rate);
     static void setOperation(Operation operation);
 
 private:
     static ADCDriver *m_driver;
+    static ADCDriver *m_driver2;
 
     static const ADCConfig m_config;
+    static const ADCConfig m_config2;
     static ADCConversionGroup m_group_config;
-
-    static std::array<std::array<uint32_t, 2>, 6> m_rate_presets;
+    static ADCConversionGroup m_group_config2;
 
     static adcsample_t *m_current_buffer;
     static size_t m_current_buffer_size;
index 4852563137d1134cad90d6ed045db8f21b3efb12..d2997f287be417eb5bb888fd2ddc2608d17cd9c2 100644 (file)
@@ -1,7 +1,8 @@
 #include "cordic.hpp"
 #include "hal.h"
 
-namespace math {
+namespace cordic {
+#if !defined(TARGET_PLATFORM_L4)
 
 void init()
 {
@@ -92,11 +93,16 @@ double tan(double x) {
     return tanx;
 }
 
-__attribute__((naked))
-double sqrt(double) {
-    asm("vsqrt.f64 d0, d0; bx lr");
-    return 0.;
-}
+#else // L4
+
+void init() {}
+
+double mod(double, double) { return 0; }
+
+double cos(double) { return 0; }
+double sin(double) { return 0; }
+double tan(double) { return 0; }
 
+#endif
 }
 
index 755fddb360c2849c1530cff85d1bc99de1d0cdbe..5c52fe4856344d77f4f7c952cffea81f6473cb07 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef CORDIC_HPP_
 #define CORDIC_HPP_
 
-namespace math {
+namespace cordic {
     constexpr double PI = 3.1415926535L;
 
     void init();
@@ -11,7 +11,6 @@ namespace math {
     double cos(double x);
     double sin(double x);
     double tan(double x);
-    double sqrt(double x);
 }
 
 #endif // CORDIC_HPP_
index 6e5851051a3435b453bb82b5b2d4f21fce00a0d9..0ec69b82ac06face8d5ff93dbbd5dab8d4be401b 100644 (file)
@@ -26,7 +26,7 @@ static_assert(sizeof(dacsample_t) == sizeof(uint16_t));
 
 #include <array>
 
-constexpr unsigned int MAX_ELF_FILE_SIZE = 8 * 1024;
+constexpr unsigned int MAX_ELF_FILE_SIZE = 16 * 1024;
 
 enum class RunStatus : char
 {
@@ -50,13 +50,15 @@ static msg_t conversionMBBuffer[2];
 static MAILBOX_DECL(conversionMB, conversionMBBuffer, 2);
 
 // Thread for LED status and wakeup hold
+#if defined(TARGET_PLATFORM_H7)
 __attribute__((section(".stacks")))
-static THD_WORKING_AREA(monitorThreadWA, 4096);
-/*extern "C"*/static THD_FUNCTION(monitorThread, arg);
+static THD_WORKING_AREA(monitorThreadWA, 1024);
+static THD_FUNCTION(monitorThread, arg);
+#endif
 
 // Thread for managing the conversion task
 __attribute__((section(".stacks")))
-static THD_WORKING_AREA(conversionThreadMonitorWA, 4096);
+static THD_WORKING_AREA(conversionThreadMonitorWA, 1024);
 static THD_FUNCTION(conversionThreadMonitor, arg);
 static thread_t *conversionThreadHandle = nullptr;
 
@@ -64,8 +66,14 @@ static thread_t *conversionThreadHandle = nullptr;
 __attribute__((section(".stacks")))
 static THD_WORKING_AREA(conversionThreadWA, 128); // All we do is enter unprivileged mode.
 static THD_FUNCTION(conversionThread, arg);
+constexpr unsigned int conversionThreadUPWASize = 
+#if defined(TARGET_PLATFORM_H7)
+                                                  62 * 1024;
+#else
+                                                  15 * 1024;
+#endif
 __attribute__((section(".convdata")))
-static THD_WORKING_AREA(conversionThreadUPWA, 62 * 1024);
+static THD_WORKING_AREA(conversionThreadUPWA, conversionThreadUPWASize);
 __attribute__((section(".convdata")))
 static thread_t *conversionThreadMonitorHandle = nullptr;
 
@@ -75,12 +83,19 @@ static THD_WORKING_AREA(communicationThreadWA, 4096);
 static THD_FUNCTION(communicationThread, arg);
 
 static time_measurement_t conversion_time_measurement;
+#if defined(TARGET_PLATFORM_H7)
 __attribute__((section(".convdata")))
 static SampleBuffer samplesIn  (reinterpret_cast<Sample *>(0x38000000)); // 16k
 __attribute__((section(".convdata")))
 static SampleBuffer samplesOut (reinterpret_cast<Sample *>(0x30004000)); // 16k
-
 static SampleBuffer samplesSigGen (reinterpret_cast<Sample *>(0x30000000)); // 16k
+#else
+__attribute__((section(".convdata")))
+static SampleBuffer samplesIn  (reinterpret_cast<Sample *>(0x20008000)); // 16k
+__attribute__((section(".convdata")))
+static SampleBuffer samplesOut (reinterpret_cast<Sample *>(0x2000C000)); // 16k
+static SampleBuffer samplesSigGen (reinterpret_cast<Sample *>(0x20010000)); // 16k
+#endif
 
 static unsigned char elf_file_store[MAX_ELF_FILE_SIZE];
 __attribute__((section(".convdata")))
@@ -108,16 +123,18 @@ int main()
     DAC::begin();
     SClock::begin();
     USBSerial::begin();
-    math::init();
+    cordic::init();
 
     SClock::setRate(SClock::Rate::R32K);
     ADC::setRate(SClock::Rate::R32K);
 
     chTMObjectInit(&conversion_time_measurement);
+#if defined(TARGET_PLATFORM_H7)
     chThdCreateStatic(
         monitorThreadWA, sizeof(monitorThreadWA),
         LOWPRIO,
         monitorThread, nullptr);
+#endif
     conversionThreadMonitorHandle = chThdCreateStatic(
         conversionThreadMonitorWA, sizeof(conversionThreadMonitorWA),
         NORMALPRIO + 1,
@@ -126,7 +143,8 @@ int main()
         conversionThreadWA, sizeof(conversionThreadWA),
         HIGHPRIO,
         conversionThread,
-        reinterpret_cast<void *>(reinterpret_cast<uint32_t>(conversionThreadUPWA) + 62 * 1024));
+        reinterpret_cast<void *>(reinterpret_cast<uint32_t>(conversionThreadUPWA) +
+                                 conversionThreadUPWASize));
     chThdCreateStatic(
         communicationThreadWA, sizeof(communicationThreadWA),
         NORMALPRIO,
@@ -222,7 +240,11 @@ THD_FUNCTION(communicationThread, arg)
 
                 // 'i' - Sends an identifying string to confirm that this is the stmdsp device.
                 case 'i':
-                    USBSerial::write(reinterpret_cast<const uint8_t *>("stmdsp"), 6);
+#if defined(TARGET_PLATFORM_H7)
+                    USBSerial::write(reinterpret_cast<const uint8_t *>("stmdsph"), 7);
+#else
+                    USBSerial::write(reinterpret_cast<const uint8_t *>("stmdspl"), 7);
+#endif
                     break;
 
                 // 'I' - Sends the current run status.
@@ -370,11 +392,13 @@ THD_FUNCTION(conversionThread, stack)
                            reinterpret_cast<uint32_t>(stack));
 }
 
+#if defined(TARGET_PLATFORM_H7)
 THD_FUNCTION(monitorThread, arg)
 {
     (void)arg;
 
-    bool erroron = false;
+    palSetLineMode(LINE_BUTTON, PAL_MODE_INPUT_PULLUP);
+
     while (1) {
         bool isidle = run_status == RunStatus::Idle;
         auto led = isidle ? LINE_LED_GREEN : LINE_LED_YELLOW;
@@ -399,6 +423,7 @@ THD_FUNCTION(monitorThread, arg)
             chThdSleepMilliseconds(500);
         }
 
+        static bool erroron = false;
         if (auto err = EM.hasError(); err ^ erroron) {
             erroron = err;
             if (err)
@@ -408,6 +433,7 @@ THD_FUNCTION(monitorThread, arg)
         }
     }
 }
+#endif
 
 void conversion_unprivileged_main()
 {
@@ -439,24 +465,45 @@ void conversion_unprivileged_main()
 void mpu_setup()
 {
     // Set up MPU for user algorithm
-    // Region 2: Data for algorithm manager thread
+#if defined(TARGET_PLATFORM_H7)
+    // Region 2: Data for algorithm thread
+    // Region 3: Code for algorithm thread
+    // Region 4: User algorithm code
     mpuConfigureRegion(MPU_REGION_2,
                        0x20000000,
                        MPU_RASR_ATTR_AP_RW_RW | MPU_RASR_ATTR_NON_CACHEABLE |
                        MPU_RASR_SIZE_64K |
                        MPU_RASR_ENABLE);
-    // Region 3: Code for algorithm manager thread
     mpuConfigureRegion(MPU_REGION_3,
                        0x0807F800,
                        MPU_RASR_ATTR_AP_RO_RO | MPU_RASR_ATTR_NON_CACHEABLE |
                        MPU_RASR_SIZE_2K |
                        MPU_RASR_ENABLE);
-    // Region 4: Algorithm code
     mpuConfigureRegion(MPU_REGION_4,
                        0x00000000,
                        MPU_RASR_ATTR_AP_RW_RW | MPU_RASR_ATTR_NON_CACHEABLE |
                        MPU_RASR_SIZE_64K |
                        MPU_RASR_ENABLE);
+#else
+    // Region 2: Data for algorithm thread and ADC/DAC buffers
+    // Region 3: Code for algorithm thread
+    // Region 4: User algorithm code
+    mpuConfigureRegion(MPU_REGION_2,
+                       0x20008000,
+                       MPU_RASR_ATTR_AP_RW_RW | MPU_RASR_ATTR_NON_CACHEABLE |
+                       MPU_RASR_SIZE_128K|
+                       MPU_RASR_ENABLE);
+    mpuConfigureRegion(MPU_REGION_3,
+                       0x0807F800,
+                       MPU_RASR_ATTR_AP_RO_RO | MPU_RASR_ATTR_NON_CACHEABLE |
+                       MPU_RASR_SIZE_2K |
+                       MPU_RASR_ENABLE);
+    mpuConfigureRegion(MPU_REGION_4,
+                       0x10000000,
+                       MPU_RASR_ATTR_AP_RW_RW | MPU_RASR_ATTR_NON_CACHEABLE |
+                       MPU_RASR_SIZE_32K |
+                       MPU_RASR_ENABLE);
+#endif
 }
 
 void conversion_abort()
@@ -523,19 +570,28 @@ void port_syscall(struct port_extctx *ctxp, uint32_t n)
     case 1:
         {
             using mathcall = void (*)();
-            static mathcall funcs[4] = {
-                reinterpret_cast<mathcall>(math::sin),
-                reinterpret_cast<mathcall>(math::cos),
-                reinterpret_cast<mathcall>(math::tan),
-                reinterpret_cast<mathcall>(math::sqrt),
+            static mathcall funcs[3] = {
+                reinterpret_cast<mathcall>(cordic::sin),
+                reinterpret_cast<mathcall>(cordic::cos),
+                reinterpret_cast<mathcall>(cordic::tan),
             };
+#if defined(PLATFORM_H7)
             asm("vmov.f64 d0, %0, %1" :: "r" (ctxp->r1), "r" (ctxp->r2));
-            if (ctxp->r0 < 4) {
+            if (ctxp->r0 < 3) {
                 funcs[ctxp->r0]();
                 asm("vmov.f64 %0, %1, d0" : "=r" (ctxp->r1), "=r" (ctxp->r2));
             } else {
                 asm("eor r0, r0; vmov.f64 d0, r0, r0");
             }
+#else
+            asm("vmov.f32 s0, %0" :: "r" (ctxp->r1));
+            if (ctxp->r0 < 3) {
+                funcs[ctxp->r0]();
+                asm("vmov.f32 %0, s0" : "=r" (ctxp->r1));
+            } else {
+                asm("eor r0, r0; vmov.f32 s0, r0");
+            }
+#endif
         }
         break;
     case 2:
@@ -551,6 +607,9 @@ void port_syscall(struct port_extctx *ctxp, uint32_t n)
                 conversion_time_measurement.last -= measurement_overhead;
         }
         break;
+    case 3:
+        ctxp->r0 = ADC::readAlt(0);
+        break;
     default:
         while (1);
         break;
index bed52bf40c8a7cfc5f18b959e750c8d6ad6c1431..6d17d2acecdfbd201e20dd9ab4817e5f513857c7 100644 (file)
@@ -6,8 +6,7 @@
 
 using Sample = uint16_t;
 
-// Gives 8000 (8192) samples total (algorithm works with max 4096).
-constexpr unsigned int MAX_SAMPLE_BUFFER_BYTESIZE = 16384;
+constexpr unsigned int MAX_SAMPLE_BUFFER_BYTESIZE = sizeof(Sample) * 8192;
 constexpr unsigned int MAX_SAMPLE_BUFFER_SIZE = MAX_SAMPLE_BUFFER_BYTESIZE / sizeof(Sample);
 
 class SampleBuffer
index 795274d38ba5144d7fa2f41f7f73c14fb93337e3..198c6841f40204e9b13df119a7b793efacdfb9c5 100644 (file)
@@ -5,19 +5,27 @@ unsigned int SClock::m_div = 1;
 unsigned int SClock::m_runcount = 0;
 
 const GPTConfig SClock::m_timer_config = {
+#if defined(TARGET_PLATFORM_H7)
     .frequency = 4800000,
+#else
+    .frequency = 36000000,
+#endif
     .callback = nullptr,
     .cr2 = TIM_CR2_MMS_1, /* TRGO */
     .dier = 0
 };
 
 const std::array<unsigned int, 6> SClock::m_rate_divs = {{
+#if defined(TARGET_PLATFORM_H7)
     /* 8k  */ 600,
     /* 16k */ 300,
     /* 20k */ 240,
     /* 32k */ 150,
     /* 48k */ 100,
     /* 96k */ 50
+#else
+    4500, 2250, 1800, 1125, 750, 375
+#endif
 }};
 
 void SClock::begin()
index 051fcd5959949d456c66f5d262a37b2d7b402912..b726e23a95b3db587455d3e8ade0de2c69266e63 100644 (file)
@@ -335,7 +335,11 @@ const USBConfig usbcfg = {
  * Serial over USB driver configuration.\r
  */\r
 const SerialUSBConfig serusbcfg = {\r
+#if defined(TARGET_PLATFORM_H7)\r
   &USBD2,\r
+#else\r
+  &USBD1,\r
+#endif\r
   USBD1_DATA_REQUEST_EP,\r
   USBD1_DATA_AVAILABLE_EP,\r
   USBD1_INTERRUPT_REQUEST_EP\r