summaryrefslogtreecommitdiff
path: root/ports/stm/peripherals
diff options
context:
space:
mode:
authorLucian Copeland <hierophect@gmail.com>2020-03-17 18:26:13 -0400
committerLucian Copeland <hierophect@gmail.com>2020-03-26 18:01:17 -0400
commitc4db8b87e2c57ca94b8f76e4b07ca02641df714e (patch)
tree8f17d3010e415f56914b81d0bd54ae86ff711e08 /ports/stm/peripherals
parentbb3ed3a827f70582f9a19ceb359b169d1b50262a (diff)
Add F7 and H7 Support to the STM32 port
Restructures the STM port of Circuitpython to be more generic about the STM32 chip lines to support the F7 and H7 series of chips. Adds the new Packages directory to organize different chip layouts between lines. Makes general changes to the Makefile to condense board-level flags to the minimum and support the new chip series. Adds the new chip line to the Peripherals directory, along with new python tools used to generate peripheral text automatically in the tools/ directory.
Diffstat (limited to 'ports/stm/peripherals')
-rw-r--r--ports/stm/peripherals/clocks.h (renamed from ports/stm/peripherals/stm32f4/clocks.h)4
-rw-r--r--ports/stm/peripherals/gpio.h (renamed from ports/stm/peripherals/stm32f4/gpio.h)5
-rw-r--r--ports/stm/peripherals/periph.h117
-rw-r--r--ports/stm/peripherals/pins.h (renamed from ports/stm/peripherals/stm32f4/pins.h)28
-rw-r--r--ports/stm/peripherals/stm32f4/periph.h180
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/clocks.c4
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c10
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/periph.c132
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/periph.h22
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/pins.c2
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f401xe/pins.h6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/clocks.c6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c5
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/periph.c134
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/periph.h22
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/pins.c2
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f405xx/pins.h6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/clocks.c6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c3
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/periph.c134
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/periph.h22
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/pins.c2
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f407xx/pins.h6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/clocks.c4
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c5
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/periph.c176
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/periph.h22
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/pins.c2
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f411xe/pins.h4
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/clocks.c6
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c214
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/periph.c196
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/periph.h22
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/pins.c2
-rw-r--r--ports/stm/peripherals/stm32f4/stm32f412zx/pins.h7
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/clocks.c162
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c48
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/periph.c260
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/periph.h55
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/pins.c210
-rw-r--r--ports/stm/peripherals/stm32h7/stm32h743xx/pins.h199
41 files changed, 1562 insertions, 890 deletions
diff --git a/ports/stm/peripherals/stm32f4/clocks.h b/ports/stm/peripherals/clocks.h
index c7ba84662..1f837c79e 100644
--- a/ports/stm/peripherals/stm32f4/clocks.h
+++ b/ports/stm/peripherals/clocks.h
@@ -3,7 +3,7 @@
*
* The MIT License (MIT)
*
- * Copyright (c) 2019 Lucian Copeland for Adafruit Industries
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -24,4 +24,4 @@
* THE SOFTWARE.
*/
-void stm32f4_peripherals_clocks_init(void);
+void stm32_peripherals_clocks_init(void);
diff --git a/ports/stm/peripherals/stm32f4/gpio.h b/ports/stm/peripherals/gpio.h
index 34f89e792..a5dbe444c 100644
--- a/ports/stm/peripherals/stm32f4/gpio.h
+++ b/ports/stm/peripherals/gpio.h
@@ -3,7 +3,7 @@
*
* The MIT License (MIT)
*
- * Copyright (c) 2019 Lucian Copeland for Adafruit Industries
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -24,5 +24,4 @@
* THE SOFTWARE.
*/
-void stm32f4_peripherals_gpio_init(void);
-void stm32f4_peripherals_status_led(uint8_t led, uint8_t state);
+void stm32_peripherals_gpio_init(void);
diff --git a/ports/stm/peripherals/periph.h b/ports/stm/peripherals/periph.h
new file mode 100644
index 000000000..aaf41361e
--- /dev/null
+++ b/ports/stm/peripherals/periph.h
@@ -0,0 +1,117 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__
+#define __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include STM32_HAL_H
+#include "pins.h"
+
+// PERIPH
+
+typedef struct {
+ uint8_t periph_index:4; // Index of the I2C unit (1 to 3)
+ uint8_t altfn_index:4; //Index of the altfn for this pin (0 to 15)
+ const mcu_pin_obj_t * pin;
+} mcu_periph_obj_t;
+
+#define PERIPH(index, alt, p_pin) \
+{ \
+ .periph_index = index, \
+ .altfn_index = alt, \
+ .pin = p_pin, \
+}
+
+//Timers
+typedef struct {
+ uint8_t tim_index:4;
+ uint8_t altfn_index:4;
+ uint8_t channel_index:4;
+ const mcu_pin_obj_t * pin;
+} mcu_tim_pin_obj_t;
+
+#define TIM(index, alt, channel, tim_pin) \
+{ \
+ .tim_index = index, \
+ .altfn_index = alt, \
+ .channel_index = channel, \
+ .pin = tim_pin, \
+}
+
+// F4 Series
+// Access Lines
+
+#ifdef STM32F401xE
+#define HAS_DAC 0
+#define HAS_TRNG 0
+#define HAS_BASIC_TIM 0
+#include "stm32f4/stm32f401xe/periph.h"
+#endif
+
+#ifdef STM32F411xE
+#define HAS_DAC 0
+#define HAS_TRNG 0
+#define HAS_BASIC_TIM 0
+#include "stm32f4/stm32f411xe/periph.h"
+#endif
+
+#ifdef STM32F412Zx
+#define HAS_DAC 0
+#define HAS_TRNG 1
+#define HAS_BASIC_TIM 1
+#include "stm32f4/stm32f412zx/periph.h"
+#endif
+
+// Foundation Lines
+
+#ifdef STM32F405xx
+#define HAS_DAC 1
+#define HAS_TRNG 1
+#define HAS_BASIC_TIM 1
+#include "stm32f4/stm32f405xx/periph.h"
+#endif
+
+#ifdef STM32F407xx
+#define HAS_DAC 1
+#define HAS_TRNG 1
+#define HAS_BASIC_TIM 1
+#include "stm32f4/stm32f407xx/periph.h"
+#endif
+
+// H7 Series
+// Single Core
+
+#ifdef STM32H743xx
+#define HAS_DAC 0
+#define HAS_TRNG 0
+#define HAS_BASIC_TIM 0
+#include "stm32h7/stm32h743xx/periph.h"
+#endif
+
+#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__
diff --git a/ports/stm/peripherals/stm32f4/pins.h b/ports/stm/peripherals/pins.h
index 44ef4c1ba..c6f1ec322 100644
--- a/ports/stm/peripherals/stm32f4/pins.h
+++ b/ports/stm/peripherals/pins.h
@@ -3,8 +3,7 @@
*
* The MIT License (MIT)
*
- * Copyright (c) 2018 Dan Halbert for Adafruit Industries
- * Copyright (c) 2019 Lucian Copeland for Adafruit Industries
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -28,13 +27,13 @@
// DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure
// that all necessary includes are already included.
-#ifndef __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PINS_H__
-#define __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PINS_H__
+#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__
+#define __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__
#include <stdint.h>
#include <stdbool.h>
-#include "stm32f4xx_hal.h"
+#include STM32_HAL_H
typedef struct {
mp_obj_base_t base;
@@ -76,21 +75,26 @@ extern const mp_obj_type_t mcu_pin_type;
// Use illegal pin value to mark unassigned pins.
#define NO_PIN 0xff
-// Choose based on chip
+// F4 Series
#ifdef STM32F401xE
-#include "stm32f401xe/pins.h"
+#include "stm32f4/stm32f401xe/pins.h"
#endif
#ifdef STM32F411xE
-#include "stm32f411xe/pins.h"
+#include "stm32f4/stm32f411xe/pins.h"
#endif
#ifdef STM32F412Zx
-#include "stm32f412zx/pins.h"
+#include "stm32f4/stm32f412zx/pins.h"
#endif
#ifdef STM32F405xx
-#include "stm32f405xx/pins.h"
+#include "stm32f4/stm32f405xx/pins.h"
#endif
#ifdef STM32F407xx
-#include "stm32f407xx/pins.h"
+#include "stm32f4/stm32f407xx/pins.h"
#endif
-#endif // __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PINS_H__
+// H7 Series
+#ifdef STM32H743xx
+#include "stm32h7/stm32h743xx/pins.h"
+#endif
+
+#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__
diff --git a/ports/stm/peripherals/stm32f4/periph.h b/ports/stm/peripherals/stm32f4/periph.h
deleted file mode 100644
index d311afe4a..000000000
--- a/ports/stm/peripherals/stm32f4/periph.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Lucian Copeland for Adafruit Industries
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PERIPH_H__
-#define __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PERIPH_H__
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "stm32f4xx_hal.h"
-#include "stm32f4/pins.h"
-
-// I2C
-// TODO: these objects should be condensed into a single 'periph_pin' unless we
-// find a compelling reason to store more unique data in them.
-
-typedef struct {
- uint8_t i2c_index:4; // Index of the I2C unit (1 to 3)
- uint8_t altfn_index:4; //Index of the altfn for this pin (0 to 15)
- const mcu_pin_obj_t * pin;
-} mcu_i2c_sda_obj_t;
-
-typedef struct {
- uint8_t i2c_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_i2c_scl_obj_t;
-
-
-#define I2C_SDA(index, alt, sda_pin) \
-{ \
- .i2c_index = index, \
- .altfn_index = alt, \
- .pin = sda_pin, \
-}
-
-#define I2C_SCL(index, alt, scl_pin) \
-{ \
- .i2c_index = index, \
- .altfn_index = alt, \
- .pin = scl_pin, \
-}
-
-// SPI
-// TODO: these objects should be condensed into a single 'periph_pin' unless we
-// find a compelling reason to store more unique data in them.
-
-typedef struct {
- uint8_t spi_index:4; //Up to 6 SPI units
- uint8_t altfn_index:4; //Up to 15 alt channels
- const mcu_pin_obj_t * pin;
-} mcu_spi_sck_obj_t;
-
-typedef struct {
- uint8_t spi_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_spi_mosi_obj_t;
-
-typedef struct {
- uint8_t spi_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_spi_miso_obj_t;
-
-typedef struct {
- uint8_t spi_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_spi_nss_obj_t;
-
-#define SPI(index, alt, spi_pin) \
-{ \
- .spi_index = index, \
- .altfn_index = alt, \
- .pin = spi_pin, \
-}
-
-// UART
-// TODO: these objects should be condensed into a single 'periph_pin' unless we
-// find a compelling reason to store more unique data in them.
-
-typedef struct {
- uint8_t uart_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_uart_tx_obj_t;
-
-typedef struct {
- uint8_t uart_index:4;
- uint8_t altfn_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_uart_rx_obj_t;
-
-#define UART(index, alt, uart_pin) \
-{ \
- .uart_index = index, \
- .altfn_index = alt, \
- .pin = uart_pin, \
-}
-
-//Timers
-typedef struct {
- uint8_t tim_index:4;
- uint8_t altfn_index:4;
- uint8_t channel_index:4;
- const mcu_pin_obj_t * pin;
-} mcu_tim_pin_obj_t;
-
-#define TIM(index, alt, channel, tim_pin) \
-{ \
- .tim_index = index, \
- .altfn_index = alt, \
- .channel_index = channel, \
- .pin = tim_pin, \
-}
-
-//Access Lines
-
-#ifdef STM32F401xE
-#define HAS_DAC 0
-#define HAS_TRNG 0
-#define HAS_BASIC_TIM 0
-#include "stm32f401xe/periph.h"
-#endif
-
-#ifdef STM32F411xE
-#define HAS_DAC 0
-#define HAS_TRNG 0
-#define HAS_BASIC_TIM 0
-#include "stm32f411xe/periph.h"
-#endif
-
-#ifdef STM32F412Zx
-#define HAS_DAC 0
-#define HAS_TRNG 1
-#define HAS_BASIC_TIM 1
-#include "stm32f412zx/periph.h"
-#endif
-
-//Foundation Lines
-
-#ifdef STM32F405xx
-#define HAS_DAC 1
-#define HAS_TRNG 1
-#define HAS_BASIC_TIM 1
-#include "stm32f405xx/periph.h"
-#endif
-
-#ifdef STM32F407xx
-#define HAS_DAC 1
-#define HAS_TRNG 1
-#define HAS_BASIC_TIM 1
-#include "stm32f407xx/periph.h"
-#endif
-
-#endif // __MICROPY_INCLUDED_STM32F4_PERIPHERALS_PERIPH_H__
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.c b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.c
index 53810af26..d048d60e8 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.c
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.c
@@ -24,10 +24,10 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
+
#include "py/mpconfig.h"
-void stm32f4_peripherals_clocks_init(void) {
+void stm32_peripherals_clocks_init(void) {
//System clock init
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c b/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c
index 7bd619662..514bcc506 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c
@@ -24,11 +24,10 @@
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "stm32f4/gpio.h"
+#include "gpio.h"
#include "common-hal/microcontroller/Pin.h"
-void stm32f4_peripherals_gpio_init(void) {
+void stm32_peripherals_gpio_init(void) {
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
@@ -44,8 +43,3 @@ void stm32f4_peripherals_gpio_init(void) {
never_reset_pin_number(0,14); //PA14 SWCLK
}
-//LEDs are inverted on F411 DISCO
-void stm32f4_peripherals_status_led(uint8_t led, uint8_t state) {
-}
-
-
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c
index b12084186..868945ecc 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c
@@ -26,98 +26,98 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
-#include "stm32f4/periph.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
// I2C
I2C_TypeDef * mcu_i2c_banks[3] = {I2C1, I2C2, I2C3};
-const mcu_i2c_sda_obj_t mcu_i2c_sda_list[5] = {
- I2C_SDA(1, 4, &pin_PB07),
- I2C_SDA(1, 4, &pin_PB09),
- I2C_SDA(2, 9, &pin_PB03),
- I2C_SDA(3, 4, &pin_PC09),
- I2C_SDA(3, 9, &pin_PB04),
+const mcu_periph_obj_t mcu_i2c_sda_list[5] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(2, 9, &pin_PB03),
+ PERIPH(3, 4, &pin_PC09),
+ PERIPH(3, 9, &pin_PB04),
};
-const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4] = {
- I2C_SCL(1, 4, &pin_PB06),
- I2C_SCL(1, 4, &pin_PB08),
- I2C_SCL(2, 4, &pin_PB10),
- I2C_SCL(3, 4, &pin_PA08)
+const mcu_periph_obj_t mcu_i2c_scl_list[4] = {
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(3, 4, &pin_PA08)
};
// SPI
SPI_TypeDef * mcu_spi_banks[4] = {SPI1, SPI2, SPI3, SPI4};
-const mcu_spi_sck_obj_t mcu_spi_sck_list[9] = {
- SPI(1, 5, &pin_PA05),
- SPI(1, 5, &pin_PB03),
- SPI(2, 5, &pin_PB10),
- SPI(2, 5, &pin_PB13),
- SPI(2, 5, &pin_PD03),
- SPI(3, 6, &pin_PB03),
- SPI(3, 6, &pin_PC10),
- SPI(4, 5, &pin_PE02),
- SPI(4, 5, &pin_PE12),
+const mcu_periph_obj_t mcu_spi_sck_list[9] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(2, 5, &pin_PD03),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(3, 6, &pin_PC10),
+ PERIPH(4, 5, &pin_PE02),
+ PERIPH(4, 5, &pin_PE12),
};
-const mcu_spi_mosi_obj_t mcu_spi_mosi_list[9] = {
- SPI(1, 5, &pin_PA07),
- SPI(1, 5, &pin_PB05),
- SPI(2, 5, &pin_PB15),
- SPI(2, 5, &pin_PC03),
- SPI(3, 6, &pin_PB05),
- SPI(3, 6, &pin_PC12),
- SPI(3, 5, &pin_PD06),
- SPI(4, 5, &pin_PE06),
- SPI(4, 5, &pin_PE14),
+const mcu_periph_obj_t mcu_spi_mosi_list[9] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PB05),
+ PERIPH(3, 6, &pin_PC12),
+ PERIPH(3, 5, &pin_PD06),
+ PERIPH(4, 5, &pin_PE06),
+ PERIPH(4, 5, &pin_PE14),
};
-const mcu_spi_miso_obj_t mcu_spi_miso_list[8] = {
- SPI(1, 5, &pin_PA06),
- SPI(1, 5, &pin_PB04),
- SPI(2, 5, &pin_PB14),
- SPI(2, 5, &pin_PC02),
- SPI(3, 6, &pin_PB04),
- SPI(3, 6, &pin_PC11),
- SPI(4, 5, &pin_PE05),
- SPI(4, 5, &pin_PE13),
+const mcu_periph_obj_t mcu_spi_miso_list[8] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(3, 6, &pin_PC11),
+ PERIPH(4, 5, &pin_PE05),
+ PERIPH(4, 5, &pin_PE13),
};
-const mcu_spi_nss_obj_t mcu_spi_nss_list[9] = {
- SPI(1, 5, &pin_PA04),
- SPI(1, 5, &pin_PA15),
- SPI(2, 5, &pin_PB09),
- SPI(2, 5, &pin_PB12),
- SPI(3, 6, &pin_PA04),
- SPI(3, 6, &pin_PA15),
- SPI(4, 6, &pin_PB12),
- SPI(4, 5, &pin_PE04),
- SPI(4, 5, &pin_PE11),
+const mcu_periph_obj_t mcu_spi_nss_list[9] = {
+ PERIPH(1, 5, &pin_PA04),
+ PERIPH(1, 5, &pin_PA15),
+ PERIPH(2, 5, &pin_PB09),
+ PERIPH(2, 5, &pin_PB12),
+ PERIPH(3, 6, &pin_PA04),
+ PERIPH(3, 6, &pin_PA15),
+ PERIPH(4, 6, &pin_PB12),
+ PERIPH(4, 5, &pin_PE04),
+ PERIPH(4, 5, &pin_PE11),
};
USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, NULL, NULL, NULL, USART6};
bool mcu_uart_has_usart[MAX_UART] = {true, true, false, false, false, true};
-const mcu_uart_tx_obj_t mcu_uart_tx_list[6] = {
- UART(2, 7, &pin_PA02),
- UART(1, 7, &pin_PA09),
- UART(6, 8, &pin_PA11),
- UART(1, 7, &pin_PB06),
- UART(6, 8, &pin_PC06),
- UART(2, 7, &pin_PD05),
+const mcu_periph_obj_t mcu_uart_tx_list[6] = {
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(6, 8, &pin_PA11),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(6, 8, &pin_PC06),
+ PERIPH(2, 7, &pin_PD05),
};
-const mcu_uart_rx_obj_t mcu_uart_rx_list[6] = {
- UART(2, 7, &pin_PA03),
- UART(1, 7, &pin_PA10),
- UART(6, 8, &pin_PA12),
- UART(1, 7, &pin_PB07),
- UART(6, 8, &pin_PC07),
- UART(2, 7, &pin_PD06),
+const mcu_periph_obj_t mcu_uart_rx_list[6] = {
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(6, 8, &pin_PA12),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(6, 8, &pin_PC07),
+ PERIPH(2, 7, &pin_PD06),
};
//Timers
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h
index 6085f1ff2..334a14db5 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h
@@ -24,29 +24,29 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PERIPH_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PERIPH_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H
//I2C
extern I2C_TypeDef * mcu_i2c_banks[3];
-extern const mcu_i2c_sda_obj_t mcu_i2c_sda_list[5];
-extern const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4];
+extern const mcu_periph_obj_t mcu_i2c_sda_list[5];
+extern const mcu_periph_obj_t mcu_i2c_scl_list[4];
//SPI
extern SPI_TypeDef * mcu_spi_banks[4];
-extern const mcu_spi_sck_obj_t mcu_spi_sck_list[9];
-extern const mcu_spi_mosi_obj_t mcu_spi_mosi_list[9];
-extern const mcu_spi_miso_obj_t mcu_spi_miso_list[8];
-extern const mcu_spi_nss_obj_t mcu_spi_nss_list[9];
+extern const mcu_periph_obj_t mcu_spi_sck_list[9];
+extern const mcu_periph_obj_t mcu_spi_mosi_list[9];
+extern const mcu_periph_obj_t mcu_spi_miso_list[8];
+extern const mcu_periph_obj_t mcu_spi_nss_list[9];
//UART
extern USART_TypeDef * mcu_uart_banks[MAX_UART];
extern bool mcu_uart_has_usart[MAX_UART];
-extern const mcu_uart_tx_obj_t mcu_uart_tx_list[6];
-extern const mcu_uart_rx_obj_t mcu_uart_rx_list[6];
+extern const mcu_periph_obj_t mcu_uart_tx_list[6];
+extern const mcu_periph_obj_t mcu_uart_rx_list[6];
//Timers
#define TIM_BANK_ARRAY_LEN 14
@@ -54,4 +54,4 @@ extern const mcu_uart_rx_obj_t mcu_uart_rx_list[6];
TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN];
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PERIPH_H \ No newline at end of file
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c
index 7e88c3dcb..eea2a1a1b 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c
@@ -26,7 +26,7 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
+#include "peripherals/pins.h"
const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h
index 09bc8f13e..c836df69a 100644
--- a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h
+++ b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h
@@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PINS_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PINS_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H
//Pins in datasheet order: DocID026289 Rev 7 page 38. LQFP100 only
//pg 38
@@ -118,4 +118,4 @@ extern const mcu_pin_obj_t pin_PE00;
extern const mcu_pin_obj_t pin_PE01;
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F401XE_PINS_H
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.c b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.c
index 2afca64e8..5f4fd2783 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.c
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.c
@@ -24,12 +24,10 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "py/mpconfig.h"
-void stm32f4_peripherals_clocks_init(void) {
- //TODO: All parameters must be moved to board level, due to relationship with HSE Osc.
+#include "py/mpconfig.h"
+void stm32_peripherals_clocks_init(void) {
//System clock init
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c
index d1eaa90d1..a5f4eae78 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c
@@ -24,11 +24,10 @@
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "stm32f4/gpio.h"
+#include "peripherals/gpio.h"
#include "common-hal/microcontroller/Pin.h"
-void stm32f4_peripherals_gpio_init(void) {
+void stm32_peripherals_gpio_init(void) {
//Enable all GPIO for now
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c
index bc03f7c7b..e75f0b206 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c
@@ -26,97 +26,97 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
-#include "stm32f4/periph.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
// I2C
I2C_TypeDef * mcu_i2c_banks[3] = {I2C1, I2C2, I2C3};
-const mcu_i2c_sda_obj_t mcu_i2c_sda_list[4] = {
- I2C_SDA(1, 4, &pin_PB07),
- I2C_SDA(1, 4, &pin_PB09),
- I2C_SDA(2, 4, &pin_PB11),
- I2C_SDA(3, 4, &pin_PC09),
+const mcu_periph_obj_t mcu_i2c_sda_list[4] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(2, 4, &pin_PB11),
+ PERIPH(3, 4, &pin_PC09),
};
-const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4] = {
- I2C_SCL(1, 4, &pin_PB06),
- I2C_SCL(1, 4, &pin_PB08),
- I2C_SCL(2, 4, &pin_PB10),
- I2C_SCL(3, 4, &pin_PA08)
+const mcu_periph_obj_t mcu_i2c_scl_list[4] = {
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(3, 4, &pin_PA08)
};
SPI_TypeDef * mcu_spi_banks[3] = {SPI1, SPI2, SPI3};
-const mcu_spi_sck_obj_t mcu_spi_sck_list[7] = {
- SPI(1, 5, &pin_PA05),
- SPI(1, 5, &pin_PB03),
- SPI(2, 5, &pin_PB10),
- SPI(2, 5, &pin_PB13),
- SPI(2, 5, &pin_PC07),
- SPI(3, 6, &pin_PB03),
- SPI(3, 6, &pin_PC10),
+const mcu_periph_obj_t mcu_spi_sck_list[7] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(2, 5, &pin_PC07),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(3, 6, &pin_PC10),
};
-const mcu_spi_mosi_obj_t mcu_spi_mosi_list[6] = {
- SPI(1, 5, &pin_PA07),
- SPI(1, 5, &pin_PB05),
- SPI(2, 5, &pin_PB15),
- SPI(2, 5, &pin_PC03),
- SPI(3, 6, &pin_PB05),
- SPI(3, 6, &pin_PC12),
+const mcu_periph_obj_t mcu_spi_mosi_list[6] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PB05),
+ PERIPH(3, 6, &pin_PC12),
};
-const mcu_spi_miso_obj_t mcu_spi_miso_list[6] = {
- SPI(1, 5, &pin_PA06),
- SPI(1, 5, &pin_PB04),
- SPI(2, 5, &pin_PB14),
- SPI(2, 5, &pin_PC02),
- SPI(3, 6, &pin_PB04),
- SPI(3, 6, &pin_PC11),
+const mcu_periph_obj_t mcu_spi_miso_list[6] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(3, 6, &pin_PC11),
};
-const mcu_spi_nss_obj_t mcu_spi_nss_list[6] = {
- SPI(1, 5, &pin_PA04),
- SPI(1, 5, &pin_PA15),
- SPI(2, 5, &pin_PB09),
- SPI(2, 5, &pin_PB12),
- SPI(3, 6, &pin_PA04),
- SPI(3, 6, &pin_PA15),
+const mcu_periph_obj_t mcu_spi_nss_list[6] = {
+ PERIPH(1, 5, &pin_PA04),
+ PERIPH(1, 5, &pin_PA15),
+ PERIPH(2, 5, &pin_PB09),
+ PERIPH(2, 5, &pin_PB12),
+ PERIPH(3, 6, &pin_PA04),
+ PERIPH(3, 6, &pin_PA15),
};
USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, USART3, UART4, UART5, USART6};
bool mcu_uart_has_usart[MAX_UART] = {true, true, true, false, false, true};
-const mcu_uart_tx_obj_t mcu_uart_tx_list[12] = {
- UART(4, 8, &pin_PA00),
- UART(2, 7, &pin_PA02),
- UART(1, 7, &pin_PA09),
- UART(1, 7, &pin_PB06),
- UART(3, 7, &pin_PB10),
- UART(6, 8, &pin_PC06),
- UART(3, 7, &pin_PC10),
- UART(4, 8, &pin_PC10),
- UART(5, 8, &pin_PC12),
- UART(2, 7, &pin_PD05),
- UART(3, 7, &pin_PD08),
- UART(6, 8, &pin_PG14),
+const mcu_periph_obj_t mcu_uart_tx_list[12] = {
+ PERIPH(4, 8, &pin_PA00),
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(3, 7, &pin_PB10),
+ PERIPH(6, 8, &pin_PC06),
+ PERIPH(3, 7, &pin_PC10),
+ PERIPH(4, 8, &pin_PC10),
+ PERIPH(5, 8, &pin_PC12),
+ PERIPH(2, 7, &pin_PD05),
+ PERIPH(3, 7, &pin_PD08),
+ PERIPH(6, 8, &pin_PG14),
};
-const mcu_uart_rx_obj_t mcu_uart_rx_list[12] = {
- UART(4, 8, &pin_PA01),
- UART(2, 7, &pin_PA03),
- UART(1, 7, &pin_PA10),
- UART(1, 7, &pin_PB07),
- UART(3, 7, &pin_PB11),
- UART(6, 8, &pin_PC07),
- UART(3, 7, &pin_PC11),
- UART(4, 8, &pin_PC11),
- UART(5, 8, &pin_PD02),
- UART(2, 7, &pin_PD06),
- UART(3, 7, &pin_PD09),
- UART(6, 8, &pin_PG09),
+const mcu_periph_obj_t mcu_uart_rx_list[12] = {
+ PERIPH(4, 8, &pin_PA01),
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(3, 7, &pin_PB11),
+ PERIPH(6, 8, &pin_PC07),
+ PERIPH(3, 7, &pin_PC11),
+ PERIPH(4, 8, &pin_PC11),
+ PERIPH(5, 8, &pin_PD02),
+ PERIPH(2, 7, &pin_PD06),
+ PERIPH(3, 7, &pin_PD09),
+ PERIPH(6, 8, &pin_PG09),
};
//Timers
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h
index e87e79857..98b4fab9c 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h
@@ -24,29 +24,29 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H
//I2C
extern I2C_TypeDef * mcu_i2c_banks[3];
-extern const mcu_i2c_sda_obj_t mcu_i2c_sda_list[4];
-extern const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4];
+extern const mcu_periph_obj_t mcu_i2c_sda_list[4];
+extern const mcu_periph_obj_t mcu_i2c_scl_list[4];
//SPI
extern SPI_TypeDef * mcu_spi_banks[3];
-extern const mcu_spi_sck_obj_t mcu_spi_sck_list[7];
-extern const mcu_spi_mosi_obj_t mcu_spi_mosi_list[6];
-extern const mcu_spi_miso_obj_t mcu_spi_miso_list[6];
-extern const mcu_spi_nss_obj_t mcu_spi_nss_list[6];
+extern const mcu_periph_obj_t mcu_spi_sck_list[7];
+extern const mcu_periph_obj_t mcu_spi_mosi_list[6];
+extern const mcu_periph_obj_t mcu_spi_miso_list[6];
+extern const mcu_periph_obj_t mcu_spi_nss_list[6];
//UART
extern USART_TypeDef * mcu_uart_banks[MAX_UART];
extern bool mcu_uart_has_usart[MAX_UART];
-extern const mcu_uart_tx_obj_t mcu_uart_tx_list[12];
-extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
+extern const mcu_periph_obj_t mcu_uart_tx_list[12];
+extern const mcu_periph_obj_t mcu_uart_rx_list[12];
//Timers
#define TIM_BANK_ARRAY_LEN 14
@@ -54,4 +54,4 @@ extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN];
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H \ No newline at end of file
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c
index 86445fe14..0f669f1c6 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c
@@ -26,7 +26,7 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
+#include "peripherals/pins.h"
const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h
index 180f5c316..b3e5e3344 100644
--- a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h
+++ b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h
@@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H
//Pins in datasheet order: DocID028087 Rev 7 page 50. LQFP100 only
//pg 50
@@ -155,4 +155,4 @@ extern const mcu_pin_obj_t pin_PB09;
extern const mcu_pin_obj_t pin_PE00;
extern const mcu_pin_obj_t pin_PE01;
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.c b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.c
index 2afca64e8..5f4fd2783 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.c
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.c
@@ -24,12 +24,10 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "py/mpconfig.h"
-void stm32f4_peripherals_clocks_init(void) {
- //TODO: All parameters must be moved to board level, due to relationship with HSE Osc.
+#include "py/mpconfig.h"
+void stm32_peripherals_clocks_init(void) {
//System clock init
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c
index d1eaa90d1..dfdd61fde 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c
@@ -24,8 +24,7 @@
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "stm32f4/gpio.h"
+#include "peripherals/gpio.h"
#include "common-hal/microcontroller/Pin.h"
void stm32f4_peripherals_gpio_init(void) {
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c
index bc03f7c7b..e75f0b206 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c
@@ -26,97 +26,97 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
-#include "stm32f4/periph.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
// I2C
I2C_TypeDef * mcu_i2c_banks[3] = {I2C1, I2C2, I2C3};
-const mcu_i2c_sda_obj_t mcu_i2c_sda_list[4] = {
- I2C_SDA(1, 4, &pin_PB07),
- I2C_SDA(1, 4, &pin_PB09),
- I2C_SDA(2, 4, &pin_PB11),
- I2C_SDA(3, 4, &pin_PC09),
+const mcu_periph_obj_t mcu_i2c_sda_list[4] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(2, 4, &pin_PB11),
+ PERIPH(3, 4, &pin_PC09),
};
-const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4] = {
- I2C_SCL(1, 4, &pin_PB06),
- I2C_SCL(1, 4, &pin_PB08),
- I2C_SCL(2, 4, &pin_PB10),
- I2C_SCL(3, 4, &pin_PA08)
+const mcu_periph_obj_t mcu_i2c_scl_list[4] = {
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(3, 4, &pin_PA08)
};
SPI_TypeDef * mcu_spi_banks[3] = {SPI1, SPI2, SPI3};
-const mcu_spi_sck_obj_t mcu_spi_sck_list[7] = {
- SPI(1, 5, &pin_PA05),
- SPI(1, 5, &pin_PB03),
- SPI(2, 5, &pin_PB10),
- SPI(2, 5, &pin_PB13),
- SPI(2, 5, &pin_PC07),
- SPI(3, 6, &pin_PB03),
- SPI(3, 6, &pin_PC10),
+const mcu_periph_obj_t mcu_spi_sck_list[7] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(2, 5, &pin_PC07),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(3, 6, &pin_PC10),
};
-const mcu_spi_mosi_obj_t mcu_spi_mosi_list[6] = {
- SPI(1, 5, &pin_PA07),
- SPI(1, 5, &pin_PB05),
- SPI(2, 5, &pin_PB15),
- SPI(2, 5, &pin_PC03),
- SPI(3, 6, &pin_PB05),
- SPI(3, 6, &pin_PC12),
+const mcu_periph_obj_t mcu_spi_mosi_list[6] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PB05),
+ PERIPH(3, 6, &pin_PC12),
};
-const mcu_spi_miso_obj_t mcu_spi_miso_list[6] = {
- SPI(1, 5, &pin_PA06),
- SPI(1, 5, &pin_PB04),
- SPI(2, 5, &pin_PB14),
- SPI(2, 5, &pin_PC02),
- SPI(3, 6, &pin_PB04),
- SPI(3, 6, &pin_PC11),
+const mcu_periph_obj_t mcu_spi_miso_list[6] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(3, 6, &pin_PC11),
};
-const mcu_spi_nss_obj_t mcu_spi_nss_list[6] = {
- SPI(1, 5, &pin_PA04),
- SPI(1, 5, &pin_PA15),
- SPI(2, 5, &pin_PB09),
- SPI(2, 5, &pin_PB12),
- SPI(3, 6, &pin_PA04),
- SPI(3, 6, &pin_PA15),
+const mcu_periph_obj_t mcu_spi_nss_list[6] = {
+ PERIPH(1, 5, &pin_PA04),
+ PERIPH(1, 5, &pin_PA15),
+ PERIPH(2, 5, &pin_PB09),
+ PERIPH(2, 5, &pin_PB12),
+ PERIPH(3, 6, &pin_PA04),
+ PERIPH(3, 6, &pin_PA15),
};
USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, USART3, UART4, UART5, USART6};
bool mcu_uart_has_usart[MAX_UART] = {true, true, true, false, false, true};
-const mcu_uart_tx_obj_t mcu_uart_tx_list[12] = {
- UART(4, 8, &pin_PA00),
- UART(2, 7, &pin_PA02),
- UART(1, 7, &pin_PA09),
- UART(1, 7, &pin_PB06),
- UART(3, 7, &pin_PB10),
- UART(6, 8, &pin_PC06),
- UART(3, 7, &pin_PC10),
- UART(4, 8, &pin_PC10),
- UART(5, 8, &pin_PC12),
- UART(2, 7, &pin_PD05),
- UART(3, 7, &pin_PD08),
- UART(6, 8, &pin_PG14),
+const mcu_periph_obj_t mcu_uart_tx_list[12] = {
+ PERIPH(4, 8, &pin_PA00),
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(3, 7, &pin_PB10),
+ PERIPH(6, 8, &pin_PC06),
+ PERIPH(3, 7, &pin_PC10),
+ PERIPH(4, 8, &pin_PC10),
+ PERIPH(5, 8, &pin_PC12),
+ PERIPH(2, 7, &pin_PD05),
+ PERIPH(3, 7, &pin_PD08),
+ PERIPH(6, 8, &pin_PG14),
};
-const mcu_uart_rx_obj_t mcu_uart_rx_list[12] = {
- UART(4, 8, &pin_PA01),
- UART(2, 7, &pin_PA03),
- UART(1, 7, &pin_PA10),
- UART(1, 7, &pin_PB07),
- UART(3, 7, &pin_PB11),
- UART(6, 8, &pin_PC07),
- UART(3, 7, &pin_PC11),
- UART(4, 8, &pin_PC11),
- UART(5, 8, &pin_PD02),
- UART(2, 7, &pin_PD06),
- UART(3, 7, &pin_PD09),
- UART(6, 8, &pin_PG09),
+const mcu_periph_obj_t mcu_uart_rx_list[12] = {
+ PERIPH(4, 8, &pin_PA01),
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(3, 7, &pin_PB11),
+ PERIPH(6, 8, &pin_PC07),
+ PERIPH(3, 7, &pin_PC11),
+ PERIPH(4, 8, &pin_PC11),
+ PERIPH(5, 8, &pin_PD02),
+ PERIPH(2, 7, &pin_PD06),
+ PERIPH(3, 7, &pin_PD09),
+ PERIPH(6, 8, &pin_PG09),
};
//Timers
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h
index e87e79857..15cbfb16d 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h
@@ -24,29 +24,29 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H
//I2C
extern I2C_TypeDef * mcu_i2c_banks[3];
-extern const mcu_i2c_sda_obj_t mcu_i2c_sda_list[4];
-extern const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4];
+extern const mcu_periph_obj_t mcu_i2c_sda_list[4];
+extern const mcu_periph_obj_t mcu_i2c_scl_list[4];
//SPI
extern SPI_TypeDef * mcu_spi_banks[3];
-extern const mcu_spi_sck_obj_t mcu_spi_sck_list[7];
-extern const mcu_spi_mosi_obj_t mcu_spi_mosi_list[6];
-extern const mcu_spi_miso_obj_t mcu_spi_miso_list[6];
-extern const mcu_spi_nss_obj_t mcu_spi_nss_list[6];
+extern const mcu_periph_obj_t mcu_spi_sck_list[7];
+extern const mcu_periph_obj_t mcu_spi_mosi_list[6];
+extern const mcu_periph_obj_t mcu_spi_miso_list[6];
+extern const mcu_periph_obj_t mcu_spi_nss_list[6];
//UART
extern USART_TypeDef * mcu_uart_banks[MAX_UART];
extern bool mcu_uart_has_usart[MAX_UART];
-extern const mcu_uart_tx_obj_t mcu_uart_tx_list[12];
-extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
+extern const mcu_periph_obj_t mcu_uart_tx_list[12];
+extern const mcu_periph_obj_t mcu_uart_rx_list[12];
//Timers
#define TIM_BANK_ARRAY_LEN 14
@@ -54,4 +54,4 @@ extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN];
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F405XX_PERIPH_H \ No newline at end of file
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c
index 86445fe14..0f669f1c6 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c
@@ -26,7 +26,7 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
+#include "peripherals/pins.h"
const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h
index 180f5c316..109dcb922 100644
--- a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h
+++ b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h
@@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H
//Pins in datasheet order: DocID028087 Rev 7 page 50. LQFP100 only
//pg 50
@@ -155,4 +155,4 @@ extern const mcu_pin_obj_t pin_PB09;
extern const mcu_pin_obj_t pin_PE00;
extern const mcu_pin_obj_t pin_PE01;
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.c b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.c
index 53810af26..d048d60e8 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.c
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.c
@@ -24,10 +24,10 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
+
#include "py/mpconfig.h"
-void stm32f4_peripherals_clocks_init(void) {
+void stm32_peripherals_clocks_init(void) {
//System clock init
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c b/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c
index aee0bd5eb..201a90e34 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c
@@ -24,12 +24,11 @@
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
-#include "stm32f4/gpio.h"
+#include "peripherals/gpio.h"
#include "py/mpconfig.h"
#include "common-hal/microcontroller/Pin.h"
-void stm32f4_peripherals_gpio_init(void) {
+void stm32_peripherals_gpio_init(void) {
//* GPIO Ports Clock Enable */
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c
index b7d9edf4f..085663749 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c
@@ -26,120 +26,120 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
-#include "stm32f4/periph.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
// I2C
I2C_TypeDef * mcu_i2c_banks[3] = {I2C1, I2C2, I2C3};
-const mcu_i2c_sda_obj_t mcu_i2c_sda_list[7] = {
- I2C_SDA(1, 4, &pin_PB07),
- I2C_SDA(1, 4, &pin_PB09),
- I2C_SDA(2, 9, &pin_PB09),
- I2C_SDA(2, 9, &pin_PB03),
- I2C_SDA(3, 4, &pin_PC09),
- I2C_SDA(3, 9, &pin_PB04),
- I2C_SDA(3, 9, &pin_PB08)
+const mcu_periph_obj_t mcu_i2c_sda_list[7] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(2, 9, &pin_PB09),
+ PERIPH(2, 9, &pin_PB03),
+ PERIPH(3, 4, &pin_PC09),
+ PERIPH(3, 9, &pin_PB04),
+ PERIPH(3, 9, &pin_PB08)
};
-const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4] = {
- I2C_SCL(1, 4, &pin_PB06),
- I2C_SCL(1, 4, &pin_PB08),
- I2C_SCL(2, 4, &pin_PB10),
- I2C_SCL(3, 4, &pin_PA08)
+const mcu_periph_obj_t mcu_i2c_scl_list[4] = {
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(3, 4, &pin_PA08)
};
// SPI
SPI_TypeDef * mcu_spi_banks[5] = {SPI1, SPI2, SPI3, SPI4, SPI5};
-const mcu_spi_sck_obj_t mcu_spi_sck_list[15] = {
- SPI(1, 5, &pin_PA05),
- SPI(1, 5, &pin_PB03),
- SPI(2, 5, &pin_PB10),
- SPI(2, 5, &pin_PB13),
- SPI(2, 5, &pin_PC07),
- SPI(2, 5, &pin_PD03),
- SPI(3, 6, &pin_PB03),
- SPI(3, 7, &pin_PB12),
- SPI(3, 6, &pin_PC10),
- SPI(4, 6, &pin_PB13),
- SPI(4, 5, &pin_PE02),
- SPI(4, 5, &pin_PE12),
- SPI(5, 6, &pin_PB00),
- SPI(5, 6, &pin_PE02),
- SPI(5, 6, &pin_PE12)
+const mcu_periph_obj_t mcu_spi_sck_list[15] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(2, 5, &pin_PC07),
+ PERIPH(2, 5, &pin_PD03),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(3, 7, &pin_PB12),
+ PERIPH(3, 6, &pin_PC10),
+ PERIPH(4, 6, &pin_PB13),
+ PERIPH(4, 5, &pin_PE02),
+ PERIPH(4, 5, &pin_PE12),
+ PERIPH(5, 6, &pin_PB00),
+ PERIPH(5, 6, &pin_PE02),
+ PERIPH(5, 6, &pin_PE12)
};
-const mcu_spi_mosi_obj_t mcu_spi_mosi_list[14] = {
- SPI(1, 5, &pin_PA07),
- SPI(1, 5, &pin_PB05),
- SPI(2, 5, &pin_PB15),
- SPI(2, 5, &pin_PC03),
- SPI(3, 6, &pin_PB05),
- SPI(3, 6, &pin_PC12),
- SPI(3, 5, &pin_PD06),
- SPI(4, 5, &pin_PA01),
- SPI(4, 5, &pin_PE06),
- SPI(4, 5, &pin_PE14),
- SPI(5, 6, &pin_PA10),
- SPI(5, 6, &pin_PB08),
- SPI(5, 6, &pin_PE06),
- SPI(5, 6, &pin_PE14)
+const mcu_periph_obj_t mcu_spi_mosi_list[14] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PB05),
+ PERIPH(3, 6, &pin_PC12),
+ PERIPH(3, 5, &pin_PD06),
+ PERIPH(4, 5, &pin_PA01),
+ PERIPH(4, 5, &pin_PE06),
+ PERIPH(4, 5, &pin_PE14),
+ PERIPH(5, 6, &pin_PA10),
+ PERIPH(5, 6, &pin_PB08),
+ PERIPH(5, 6, &pin_PE06),
+ PERIPH(5, 6, &pin_PE14)
};
-const mcu_spi_miso_obj_t mcu_spi_miso_list[12] = {
- SPI(1, 5, &pin_PA06),
- SPI(1, 5, &pin_PB04),
- SPI(2, 5, &pin_PB14),
- SPI(2, 5, &pin_PC02),
- SPI(3, 6, &pin_PB04),
- SPI(3, 6, &pin_PC11),
- SPI(4, 6, &pin_PA11),
- SPI(4, 5, &pin_PE05),
- SPI(4, 5, &pin_PE13),
- SPI(5, 6, &pin_PA12),
- SPI(5, 6, &pin_PE05),
- SPI(5, 6, &pin_PE13)
+const mcu_periph_obj_t mcu_spi_miso_list[12] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(3, 6, &pin_PC11),
+ PERIPH(4, 6, &pin_PA11),
+ PERIPH(4, 5, &pin_PE05),
+ PERIPH(4, 5, &pin_PE13),
+ PERIPH(5, 6, &pin_PA12),
+ PERIPH(5, 6, &pin_PE05),
+ PERIPH(5, 6, &pin_PE13)
};
-const mcu_spi_nss_obj_t mcu_spi_nss_list[12] = {
- SPI(1, 5, &pin_PA04),
- SPI(1, 5, &pin_PA15),
- SPI(2, 5, &pin_PB09),
- SPI(2, 5, &pin_PB12),
- SPI(3, 6, &pin_PA04),
- SPI(3, 6, &pin_PA15),
- SPI(4, 6, &pin_PB12),
- SPI(4, 5, &pin_PE04),
- SPI(4, 5, &pin_PE11),
- SPI(5, 6, &pin_PB01),
- SPI(5, 6, &pin_PE04),
- SPI(5, 6, &pin_PE11)
+const mcu_periph_obj_t mcu_spi_nss_list[12] = {
+ PERIPH(1, 5, &pin_PA04),
+ PERIPH(1, 5, &pin_PA15),
+ PERIPH(2, 5, &pin_PB09),
+ PERIPH(2, 5, &pin_PB12),
+ PERIPH(3, 6, &pin_PA04),
+ PERIPH(3, 6, &pin_PA15),
+ PERIPH(4, 6, &pin_PB12),
+ PERIPH(4, 5, &pin_PE04),
+ PERIPH(4, 5, &pin_PE11),
+ PERIPH(5, 6, &pin_PB01),
+ PERIPH(5, 6, &pin_PE04),
+ PERIPH(5, 6, &pin_PE11)
};
USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, NULL, NULL, NULL, USART6};
bool mcu_uart_has_usart[MAX_UART] = {true, true, false, false, false, true};
-const mcu_uart_tx_obj_t mcu_uart_tx_list[7] = {
- UART(2, 7, &pin_PA02),
- UART(1, 7, &pin_PA09),
- UART(1, 7, &pin_PA15),
- UART(6, 8, &pin_PA11),
- UART(1, 7, &pin_PB06),
- UART(6, 8, &pin_PC06),
- UART(2, 7, &pin_PD05),
+const mcu_periph_obj_t mcu_uart_tx_list[7] = {
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(1, 7, &pin_PA15),
+ PERIPH(6, 8, &pin_PA11),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(6, 8, &pin_PC06),
+ PERIPH(2, 7, &pin_PD05),
};
-const mcu_uart_rx_obj_t mcu_uart_rx_list[7] = {
- UART(2, 7, &pin_PA03),
- UART(1, 7, &pin_PA10),
- UART(6, 8, &pin_PA12),
- UART(1, 7, &pin_PB03),
- UART(1, 7, &pin_PB07),
- UART(6, 8, &pin_PC07),
- UART(2, 7, &pin_PD06),
+const mcu_periph_obj_t mcu_uart_rx_list[7] = {
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(6, 8, &pin_PA12),
+ PERIPH(1, 7, &pin_PB03),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(6, 8, &pin_PC07),
+ PERIPH(2, 7, &pin_PD06),
};
//Timers
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h
index d657d73b6..2c5e5dd56 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h
@@ -24,29 +24,29 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H
//I2C
extern I2C_TypeDef * mcu_i2c_banks[3];
-extern const mcu_i2c_sda_obj_t mcu_i2c_sda_list[7];
-extern const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4];
+extern const mcu_periph_obj_t mcu_i2c_sda_list[7];
+extern const mcu_periph_obj_t mcu_i2c_scl_list[4];
//SPI
extern SPI_TypeDef * mcu_spi_banks[5];
-extern const mcu_spi_sck_obj_t mcu_spi_sck_list[15];
-extern const mcu_spi_mosi_obj_t mcu_spi_mosi_list[14];
-extern const mcu_spi_miso_obj_t mcu_spi_miso_list[12];
-extern const mcu_spi_nss_obj_t mcu_spi_nss_list[12];
+extern const mcu_periph_obj_t mcu_spi_sck_list[15];
+extern const mcu_periph_obj_t mcu_spi_mosi_list[14];
+extern const mcu_periph_obj_t mcu_spi_miso_list[12];
+extern const mcu_periph_obj_t mcu_spi_nss_list[12];
//UART
extern USART_TypeDef * mcu_uart_banks[MAX_UART];
extern bool mcu_uart_has_usart[MAX_UART];
-extern const mcu_uart_tx_obj_t mcu_uart_tx_list[7];
-extern const mcu_uart_rx_obj_t mcu_uart_rx_list[7];
+extern const mcu_periph_obj_t mcu_uart_tx_list[7];
+extern const mcu_periph_obj_t mcu_uart_rx_list[7];
//Timers
#define TIM_BANK_ARRAY_LEN 14
@@ -54,4 +54,4 @@ extern const mcu_uart_rx_obj_t mcu_uart_rx_list[7];
TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN];
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H \ No newline at end of file
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c
index 7e88c3dcb..eea2a1a1b 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c
@@ -26,7 +26,7 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
+#include "peripherals/pins.h"
const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h
index 37d3a5cf1..b6c18b02e 100644
--- a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h
+++ b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h
@@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PINS_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PINS_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H
//Pins in datasheet order: DocID026289 Rev 7 page 38. LQFP100 only
//pg 38
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.c b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.c
index b208f9dfb..ad45abed2 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.c
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.c
@@ -24,12 +24,12 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include "stm32f4xx_hal.h"
+
#include "py/mpconfig.h"
-void stm32f4_peripherals_clocks_init(void) {
+void stm32_peripherals_clocks_init(void) {
//System clock init
- RCC_ClkInitTypeDef RCC_ClkInitStruct;
+ RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c
index d17ab4e01..97ec933ea 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c
@@ -24,193 +24,23 @@
* THE SOFTWARE.
*/
-/* GPIO PIN REFERENCE
-#define LED3_Pin GPIO_PIN_2
-#define LED3_GPIO_Port GPIOE
-#define LED4_Pin GPIO_PIN_3
-#define LED4_GPIO_Port GPIOE
-#define DFSDM_DATIN3_Pin GPIO_PIN_4
-#define DFSDM_DATIN3_GPIO_Port GPIOE
-#define A0_Pin GPIO_PIN_0
-#define A0_GPIO_Port GPIOF
-#define LCD_BLCTRL_Pin GPIO_PIN_5
-#define LCD_BLCTRL_GPIO_Port GPIOF
-#define QSPI_BK1_IO3_Pin GPIO_PIN_6
-#define QSPI_BK1_IO3_GPIO_Port GPIOF
-#define QSPI_BK1_IO2_Pin GPIO_PIN_7
-#define QSPI_BK1_IO2_GPIO_Port GPIOF
-#define QSPI_BK1_IO0_Pin GPIO_PIN_8
-#define QSPI_BK1_IO0_GPIO_Port GPIOF
-#define QSPI_BK1_IO1_Pin GPIO_PIN_9
-#define QSPI_BK1_IO1_GPIO_Port GPIOF
-#define STLK_MCO_Pin GPIO_PIN_0
-#define STLK_MCO_GPIO_Port GPIOH
-#define DFSDM_CKOUT_Pin GPIO_PIN_2
-#define DFSDM_CKOUT_GPIO_Port GPIOC
-#define JOY_SEL_Pin GPIO_PIN_0
-#define JOY_SEL_GPIO_Port GPIOA
-#define STLINK_RX_Pin GPIO_PIN_2
-#define STLINK_RX_GPIO_Port GPIOA
-#define STLINK_TX_Pin GPIO_PIN_3
-#define STLINK_TX_GPIO_Port GPIOA
-#define CODEC_I2S3_WS_Pin GPIO_PIN_4
-#define CODEC_I2S3_WS_GPIO_Port GPIOA
-#define DFSDM_DATIN0_Pin GPIO_PIN_1
-#define DFSDM_DATIN0_GPIO_Port GPIOB
-#define QSPI_CLK_Pin GPIO_PIN_2
-#define QSPI_CLK_GPIO_Port GPIOB
-#define EXT_RESET_Pin GPIO_PIN_11
-#define EXT_RESET_GPIO_Port GPIOF
-#define CTP_RST_Pin GPIO_PIN_12
-#define CTP_RST_GPIO_Port GPIOF
-#define JOY_RIGHT_Pin GPIO_PIN_14
-#define JOY_RIGHT_GPIO_Port GPIOF
-#define JOY_LEFT_Pin GPIO_PIN_15
-#define JOY_LEFT_GPIO_Port GPIOF
-#define JOY_UP_Pin GPIO_PIN_0
-#define JOY_UP_GPIO_Port GPIOG
-#define JOY_DOWN_Pin GPIO_PIN_1
-#define JOY_DOWN_GPIO_Port GPIOG
-#define D4_Pin GPIO_PIN_7
-#define D4_GPIO_Port GPIOE
-#define D5_Pin GPIO_PIN_8
-#define D5_GPIO_Port GPIOE
-#define D6_Pin GPIO_PIN_9
-#define D6_GPIO_Port GPIOE
-#define D7_Pin GPIO_PIN_10
-#define D7_GPIO_Port GPIOE
-#define D8_Pin GPIO_PIN_11
-#define D8_GPIO_Port GPIOE
-#define D9_Pin GPIO_PIN_12
-#define D9_GPIO_Port GPIOE
-#define D10_Pin GPIO_PIN_13
-#define D10_GPIO_Port GPIOE
-#define D11_Pin GPIO_PIN_14
-#define D11_GPIO_Port GPIOE
-#define D12_Pin GPIO_PIN_15
-#define D12_GPIO_Port GPIOE
-#define I2C2_SCL_Pin GPIO_PIN_10
-#define I2C2_SCL_GPIO_Port GPIOB
-#define M2_CKIN_Pin GPIO_PIN_11
-#define M2_CKIN_GPIO_Port GPIOB
-#define CODEC_I2S3_SCK_Pin GPIO_PIN_12
-#define CODEC_I2S3_SCK_GPIO_Port GPIOB
-#define D13_Pin GPIO_PIN_8
-#define D13_GPIO_Port GPIOD
-#define D14_Pin GPIO_PIN_9
-#define D14_GPIO_Port GPIOD
-#define D15_Pin GPIO_PIN_10
-#define D15_GPIO_Port GPIOD
-#define LCD_RESET_Pin GPIO_PIN_11
-#define LCD_RESET_GPIO_Port GPIOD
-#define D0_Pin GPIO_PIN_14
-#define D0_GPIO_Port GPIOD
-#define D1_Pin GPIO_PIN_15
-#define D1_GPIO_Port GPIOD
-#define CODEC_INT_Pin GPIO_PIN_2
-#define CODEC_INT_GPIO_Port GPIOG
-#define LCD_TE_Pin GPIO_PIN_4
-#define LCD_TE_GPIO_Port GPIOG
-#define CTP_INT_Pin GPIO_PIN_5
-#define CTP_INT_GPIO_Port GPIOG
-#define QSPI_BK1_NCS_Pin GPIO_PIN_6
-#define QSPI_BK1_NCS_GPIO_Port GPIOG
-#define USB_OTGFS_OVRCR_Pin GPIO_PIN_7
-#define USB_OTGFS_OVRCR_GPIO_Port GPIOG
-#define USB_OTGFS_PPWR_EN_Pin GPIO_PIN_8
-#define USB_OTGFS_PPWR_EN_GPIO_Port GPIOG
-#define CODEC_I2S3_MCK_Pin GPIO_PIN_7
-#define CODEC_I2S3_MCK_GPIO_Port GPIOC
-#define uSD_D0_Pin GPIO_PIN_8
-#define uSD_D0_GPIO_Port GPIOC
-#define uSD_D1_Pin GPIO_PIN_9
-#define uSD_D1_GPIO_Port GPIOC
-#define M2_CKINA8_Pin GPIO_PIN_8
-#define M2_CKINA8_GPIO_Port GPIOA
-#define USB_OTGFS_VBUS_Pin GPIO_PIN_9
-#define USB_OTGFS_VBUS_GPIO_Port GPIOA
-#define USB_OTGFS_ID_Pin GPIO_PIN_10
-#define USB_OTGFS_ID_GPIO_Port GPIOA
-#define USB_OTGFS_DM_Pin GPIO_PIN_11
-#define USB_OTGFS_DM_GPIO_Port GPIOA
-#define USB_OTGFS_DP_Pin GPIO_PIN_12
-#define USB_OTGFS_DP_GPIO_Port GPIOA
-#define SWDIO_Pin GPIO_PIN_13
-#define SWDIO_GPIO_Port GPIOA
-#define SWCLK_Pin GPIO_PIN_14
-#define SWCLK_GPIO_Port GPIOA
-#define uSD_D2_Pin GPIO_PIN_10
-#define uSD_D2_GPIO_Port GPIOC
-#define uSD_D3_Pin GPIO_PIN_11
-#define uSD_D3_GPIO_Port GPIOC
-#define uSD_CLK_Pin GPIO_PIN_12
-#define uSD_CLK_GPIO_Port GPIOC
-#define D2_Pin GPIO_PIN_0
-#define D2_GPIO_Port GPIOD
-#define D3_Pin GPIO_PIN_1
-#define D3_GPIO_Port GPIOD
-#define uSD_CMD_Pin GPIO_PIN_2
-#define uSD_CMD_GPIO_Port GPIOD
-#define uSD_DETECT_Pin GPIO_PIN_3
-#define uSD_DETECT_GPIO_Port GPIOD
-#define FMC_NOE_Pin GPIO_PIN_4
-#define FMC_NOE_GPIO_Port GPIOD
-#define FMC_NWE_Pin GPIO_PIN_5
-#define FMC_NWE_GPIO_Port GPIOD
-#define FMC_NE1_Pin GPIO_PIN_7
-#define FMC_NE1_GPIO_Port GPIOD
-#define SWO_Pin GPIO_PIN_3
-#define SWO_GPIO_Port GPIOB
-#define CODEC_I2S3ext_SD_Pin GPIO_PIN_4
-#define CODEC_I2S3ext_SD_GPIO_Port GPIOB
-#define CODEC_I2S3_SD_Pin GPIO_PIN_5
-#define CODEC_I2S3_SD_GPIO_Port GPIOB
-#define I2C1_SCL_Pin GPIO_PIN_6
-#define I2C1_SCL_GPIO_Port GPIOB
-#define I2C1_SDA_Pin GPIO_PIN_7
-#define I2C1_SDA_GPIO_Port GPIOB
-#define I2C2_SDA_Pin GPIO_PIN_9
-#define I2C2_SDA_GPIO_Port GPIOB
-#define LED1_Pin GPIO_PIN_0
-#define LED1_GPIO_Port GPIOE
-#define LED2_Pin GPIO_PIN_1
-#define LED2_GPIO_Port GPIOE
-*/
-
-#include "stm32f4xx_hal.h"
-#include "stm32f4/gpio.h"
+#include "peripherals/gpio.h"
#include "common-hal/microcontroller/Pin.h"
-void stm32f4_peripherals_gpio_init(void) {
- //Enable all GPIO for now
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOH_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
-
- HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_RESET);
- //HAL_GPIO_WritePin(USB_OTGFS_PPWR_EN_GPIO_Port, USB_OTGFS_PPWR_EN_Pin, GPIO_PIN_SET);
+void stm32_peripherals_gpio_init(void) {
- //Configure LED pins
- GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOF_CLK_ENABLE();
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ __HAL_RCC_GPIOG_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
- //Status LED chain
- stm32f4_peripherals_status_led(0,1);
- stm32f4_peripherals_status_led(1,0);
- stm32f4_peripherals_status_led(2,0);
- stm32f4_peripherals_status_led(3,0);
-
- //Never reset pins
- never_reset_pin_number(2,13); //PC13 anti tamp
+ //Never reset pins
+ never_reset_pin_number(2,13); //PC13 anti tamp
never_reset_pin_number(2,14); //PC14 OSC32_IN
never_reset_pin_number(2,15); //PC15 OSC32_OUT
never_reset_pin_number(0,13); //PA13 SWDIO
@@ -223,21 +53,3 @@ void stm32f4_peripherals_gpio_init(void) {
// never_reset_pin_number(5,0); //PH0 JTDO
// never_reset_pin_number(5,1); //PH1 JTRST
}
-
-//LEDs are inverted on F411 DISCO
-void stm32f4_peripherals_status_led(uint8_t led, uint8_t state) {
- switch(led)
- {
- case 0: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, (state ^ 1));
- break;
- case 1: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, (state ^ 1));
- break;
- case 2: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, (state ^ 1));
- break;
- case 3: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, (state ^ 1));
- break;
- default: break;
- }
-}
-
-
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c
index f5effa80e..e92c88ce5 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c
@@ -26,98 +26,98 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
-#include "stm32f4/periph.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
// I2C
I2C_TypeDef * mcu_i2c_banks[3] = {I2C1, I2C2, I2C3};
-const mcu_i2c_sda_obj_t mcu_i2c_sda_list[8] = {
- I2C_SDA(1, 4, &pin_PB07),
- I2C_SDA(1, 4, &pin_PB09),
- I2C_SDA(2, 4, &pin_PB11), //not on LQFP100
- I2C_SDA(2, 9, &pin_PB09),
- I2C_SDA(2, 9, &pin_PB03),
- I2C_SDA(3, 4, &pin_PC09),
- I2C_SDA(3, 9, &pin_PB04),
- I2C_SDA(3, 9, &pin_PB08)
+const mcu_periph_obj_t mcu_i2c_sda_list[8] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(2, 4, &pin_PB11), //not on LQFP100
+ PERIPH(2, 9, &pin_PB09),
+ PERIPH(2, 9, &pin_PB03),
+ PERIPH(3, 4, &pin_PC09),
+ PERIPH(3, 9, &pin_PB04),
+ PERIPH(3, 9, &pin_PB08)
};
-const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4] = {
- I2C_SCL(1, 4, &pin_PB06),
- I2C_SCL(1, 4, &pin_PB08),
- I2C_SCL(2, 4, &pin_PB10),
- I2C_SCL(3, 4, &pin_PA08)
+const mcu_periph_obj_t mcu_i2c_scl_list[4] = {
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(3, 4, &pin_PA08)
};
// SPI
SPI_TypeDef * mcu_spi_banks[5] = {SPI1, SPI2, SPI3, SPI4, SPI5};
-const mcu_spi_sck_obj_t mcu_spi_sck_list[15] = {
- SPI(1, 5, &pin_PA05),
- SPI(1, 5, &pin_PB03),
- SPI(2, 5, &pin_PB10),
- SPI(2, 5, &pin_PB13),
- SPI(2, 5, &pin_PC07),
- SPI(2, 5, &pin_PD03),
- SPI(3, 6, &pin_PB03),
- SPI(3, 7, &pin_PB12),
- SPI(3, 6, &pin_PC10),
- SPI(4, 6, &pin_PB13),
- SPI(4, 5, &pin_PE02),
- SPI(4, 5, &pin_PE12),
- SPI(5, 6, &pin_PB00),
- SPI(5, 6, &pin_PE02),
- SPI(5, 6, &pin_PE12)
+const mcu_periph_obj_t mcu_spi_sck_list[15] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(2, 5, &pin_PC07),
+ PERIPH(2, 5, &pin_PD03),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(3, 7, &pin_PB12),
+ PERIPH(3, 6, &pin_PC10),
+ PERIPH(4, 6, &pin_PB13),
+ PERIPH(4, 5, &pin_PE02),
+ PERIPH(4, 5, &pin_PE12),
+ PERIPH(5, 6, &pin_PB00),
+ PERIPH(5, 6, &pin_PE02),
+ PERIPH(5, 6, &pin_PE12)
};
-const mcu_spi_mosi_obj_t mcu_spi_mosi_list[14] = {
- SPI(1, 5, &pin_PA07),
- SPI(1, 5, &pin_PB05),
- SPI(2, 5, &pin_PB15),
- SPI(2, 5, &pin_PC03),
- SPI(3, 6, &pin_PB05),
- SPI(3, 6, &pin_PC12),
- SPI(3, 5, &pin_PD06),
- SPI(4, 5, &pin_PA01),
- SPI(4, 5, &pin_PE06),
- SPI(4, 5, &pin_PE14),
- SPI(5, 6, &pin_PA10),
- SPI(5, 6, &pin_PB08),
- SPI(5, 6, &pin_PE06),
- SPI(5, 6, &pin_PE14)
+const mcu_periph_obj_t mcu_spi_mosi_list[14] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PB05),
+ PERIPH(3, 6, &pin_PC12),
+ PERIPH(3, 5, &pin_PD06),
+ PERIPH(4, 5, &pin_PA01),
+ PERIPH(4, 5, &pin_PE06),
+ PERIPH(4, 5, &pin_PE14),
+ PERIPH(5, 6, &pin_PA10),
+ PERIPH(5, 6, &pin_PB08),
+ PERIPH(5, 6, &pin_PE06),
+ PERIPH(5, 6, &pin_PE14)
};
-const mcu_spi_miso_obj_t mcu_spi_miso_list[12] = {
- SPI(1, 5, &pin_PA06),
- SPI(1, 5, &pin_PB04),
- SPI(2, 5, &pin_PB14),
- SPI(2, 5, &pin_PC02),
- SPI(3, 6, &pin_PB04),
- SPI(3, 6, &pin_PC11),
- SPI(4, 6, &pin_PA11),
- SPI(4, 5, &pin_PE05),
- SPI(4, 5, &pin_PE13),
- SPI(5, 6, &pin_PA12),
- SPI(5, 6, &pin_PE05),
- SPI(5, 6, &pin_PE13)
+const mcu_periph_obj_t mcu_spi_miso_list[12] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(3, 6, &pin_PC11),
+ PERIPH(4, 6, &pin_PA11),
+ PERIPH(4, 5, &pin_PE05),
+ PERIPH(4, 5, &pin_PE13),
+ PERIPH(5, 6, &pin_PA12),
+ PERIPH(5, 6, &pin_PE05),
+ PERIPH(5, 6, &pin_PE13)
};
-const mcu_spi_nss_obj_t mcu_spi_nss_list[12] = {
- SPI(1, 5, &pin_PA04),
- SPI(1, 5, &pin_PA15),
- SPI(2, 5, &pin_PB09),
- SPI(2, 5, &pin_PB12),
- SPI(3, 6, &pin_PA04),
- SPI(3, 6, &pin_PA15),
- SPI(4, 6, &pin_PB12),
- SPI(4, 5, &pin_PE04),
- SPI(4, 5, &pin_PE11),
- SPI(5, 6, &pin_PB01),
- SPI(5, 6, &pin_PE04),
- SPI(5, 6, &pin_PE11)
+const mcu_periph_obj_t mcu_spi_nss_list[12] = {
+ PERIPH(1, 5, &pin_PA04),
+ PERIPH(1, 5, &pin_PA15),
+ PERIPH(2, 5, &pin_PB09),
+ PERIPH(2, 5, &pin_PB12),
+ PERIPH(3, 6, &pin_PA04),
+ PERIPH(3, 6, &pin_PA15),
+ PERIPH(4, 6, &pin_PB12),
+ PERIPH(4, 5, &pin_PE04),
+ PERIPH(4, 5, &pin_PE11),
+ PERIPH(5, 6, &pin_PB01),
+ PERIPH(5, 6, &pin_PE04),
+ PERIPH(5, 6, &pin_PE11)
};
//UART
@@ -125,33 +125,33 @@ const mcu_spi_nss_obj_t mcu_spi_nss_list[12] = {
USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, USART3, NULL, NULL, USART6};
bool mcu_uart_has_usart[MAX_UART] = {true, true, true, false, false, true};
-const mcu_uart_tx_obj_t mcu_uart_tx_list[11] = {
- UART(2, 7, &pin_PA02),
- UART(1, 7, &pin_PA09),
- UART(1, 7, &pin_PA15),
- UART(6, 8, &pin_PA11),
- UART(1, 7, &pin_PB06),
- UART(3, 7, &pin_PB10),
- UART(6, 8, &pin_PC06),
- UART(3, 7, &pin_PC10),
- UART(2, 7, &pin_PD05),
- UART(3, 7, &pin_PD08),
- UART(6, 8, &pin_PG14),
+const mcu_periph_obj_t mcu_uart_tx_list[11] = {
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(1, 7, &pin_PA15),
+ PERIPH(6, 8, &pin_PA11),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(3, 7, &pin_PB10),
+ PERIPH(6, 8, &pin_PC06),
+ PERIPH(3, 7, &pin_PC10),
+ PERIPH(2, 7, &pin_PD05),
+ PERIPH(3, 7, &pin_PD08),
+ PERIPH(6, 8, &pin_PG14),
};
-const mcu_uart_rx_obj_t mcu_uart_rx_list[12] = {
- UART(2, 7, &pin_PA03),
- UART(1, 7, &pin_PA10),
- UART(6, 8, &pin_PA12),
- UART(1, 7, &pin_PB03),
- UART(1, 7, &pin_PB07),
- UART(3, 7, &pin_PB11),
- UART(3, 7, &pin_PC05),
- UART(6, 8, &pin_PC07),
- UART(3, 7, &pin_PC11),
- UART(2, 7, &pin_PD06),
- UART(3, 7, &pin_PD09),
- UART(6, 8, &pin_PG09),
+const mcu_periph_obj_t mcu_uart_rx_list[12] = {
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(6, 8, &pin_PA12),
+ PERIPH(1, 7, &pin_PB03),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(3, 7, &pin_PB11),
+ PERIPH(3, 7, &pin_PC05),
+ PERIPH(6, 8, &pin_PC07),
+ PERIPH(3, 7, &pin_PC11),
+ PERIPH(2, 7, &pin_PD06),
+ PERIPH(3, 7, &pin_PD09),
+ PERIPH(6, 8, &pin_PG09),
};
//Timers
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h
index e0141e6da..f668ace75 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h
@@ -24,30 +24,30 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H
//I2C
extern I2C_TypeDef * mcu_i2c_banks[3];
-extern const mcu_i2c_sda_obj_t mcu_i2c_sda_list[8];
-extern const mcu_i2c_scl_obj_t mcu_i2c_scl_list[4];
+extern const mcu_periph_obj_t mcu_i2c_sda_list[8];
+extern const mcu_periph_obj_t mcu_i2c_scl_list[4];
//SPI
extern SPI_TypeDef * mcu_spi_banks[5];
-extern const mcu_spi_sck_obj_t mcu_spi_sck_list[15];
-extern const mcu_spi_mosi_obj_t mcu_spi_mosi_list[14];
-extern const mcu_spi_miso_obj_t mcu_spi_miso_list[12];
-extern const mcu_spi_nss_obj_t mcu_spi_nss_list[12];
+extern const mcu_periph_obj_t mcu_spi_sck_list[15];
+extern const mcu_periph_obj_t mcu_spi_mosi_list[14];
+extern const mcu_periph_obj_t mcu_spi_miso_list[12];
+extern const mcu_periph_obj_t mcu_spi_nss_list[12];
//UART
extern USART_TypeDef * mcu_uart_banks[MAX_UART];
extern bool mcu_uart_has_usart[MAX_UART];
-extern const mcu_uart_tx_obj_t mcu_uart_tx_list[11];
-extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
+extern const mcu_periph_obj_t mcu_uart_tx_list[11];
+extern const mcu_periph_obj_t mcu_uart_rx_list[12];
//Timers
#define TIM_BANK_ARRAY_LEN 14
@@ -55,4 +55,4 @@ extern const mcu_uart_rx_obj_t mcu_uart_rx_list[12];
TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN];
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PERIPH_H \ No newline at end of file
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c
index c56de5a29..ef3ce6d0e 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c
@@ -26,7 +26,7 @@
#include "py/obj.h"
#include "py/mphal.h"
-#include "stm32f4/pins.h"
+#include "peripherals/pins.h"
const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h
index 180f5c316..5cf99345c 100644
--- a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h
+++ b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h
@@ -24,10 +24,9 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
-#define MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H
-//Pins in datasheet order: DocID028087 Rev 7 page 50. LQFP100 only
//pg 50
extern const mcu_pin_obj_t pin_PE02;
extern const mcu_pin_obj_t pin_PE03;
@@ -155,4 +154,4 @@ extern const mcu_pin_obj_t pin_PB09;
extern const mcu_pin_obj_t pin_PE00;
extern const mcu_pin_obj_t pin_PE01;
-#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F412ZG_PINS_H
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.c b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.c
new file mode 100644
index 000000000..494b7709e
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.c
@@ -0,0 +1,162 @@
+
+/*
+ * This file is part of the Micro Python project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "py/mpconfig.h"
+
+void stm32_peripherals_clocks_init(void) {
+ RCC_ClkInitTypeDef RCC_ClkInitStruct;
+ RCC_OscInitTypeDef RCC_OscInitStruct;
+
+ /* The PWR block is always enabled on the H7 series- there is no clock
+ enable. For now, use the default VOS3 scale mode (lowest) and limit clock
+ frequencies to avoid potential current draw problems from bus
+ power when using the max clock speeds throughout the chip. */
+
+ /* Enable HSE Oscillator and activate PLL1 with HSE as source */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
+ RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = HSE_VALUE/1000000;
+ RCC_OscInitStruct.PLL.PLLN = 336;
+ RCC_OscInitStruct.PLL.PLLP = 2;
+ RCC_OscInitStruct.PLL.PLLQ = 7;
+ RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_0;
+ RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOMEDIUM;
+ RCC_OscInitStruct.PLL.PLLFRACN = 0;
+ HAL_RCC_OscConfig(&RCC_OscInitStruct);
+
+ RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | \
+ RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | \
+ RCC_CLOCKTYPE_D3PCLK1);
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
+
+ /* Unlike on the STM32F4 family, it appears the maximum APB frequencies are
+ device-dependent- 120 MHz for this board according to Figure 2 of
+ the datasheet. Dividing by half will be safe for now. */
+ RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
+ RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
+
+ /* 4 wait states required for 168MHz and VOS3. */
+ HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
+
+ /* Like on F4, on H7, USB's actual peripheral clock and bus clock are
+ separate. However, the main system PLL (PLL1) doesn't have a direct
+ connection to the USB peripheral clock to generate 48 MHz, so we do this
+ dance. This will connect PLL1's Q output to the USB peripheral clock. */
+ RCC_PeriphCLKInitTypeDef RCC_PeriphCLKInitStruct;
+
+ RCC_PeriphCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ RCC_PeriphCLKInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
+ HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphCLKInitStruct);
+
+ // RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ // RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ // RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ // /** Supply configuration update enable
+ // */
+ // HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
+ // /** Configure the main internal regulator output voltage
+ // */
+ // __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+
+ // while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
+ // /** Macro to configure the PLL clock source
+ // */
+ // __HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE);
+ // /** Initializes the CPU, AHB and APB busses clocks
+ // */
+ // RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ // RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
+ // RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ // RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ // RCC_OscInitStruct.PLL.PLLM = 4;
+ // RCC_OscInitStruct.PLL.PLLN = 400;
+ // RCC_OscInitStruct.PLL.PLLP = 2;
+ // RCC_OscInitStruct.PLL.PLLQ = 4;
+ // RCC_OscInitStruct.PLL.PLLR = 2;
+ // RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_1;
+ // RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
+ // RCC_OscInitStruct.PLL.PLLFRACN = 0;
+ // if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ // {
+
+ // }
+ // /** Initializes the CPU, AHB and APB busses clocks
+ // */
+ // RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ // |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
+ // |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
+ // RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ // RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
+ // RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
+ // RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
+ // RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
+ // RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
+ // RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
+
+ // if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+ // {
+
+ // }
+ // PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB; /*RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_UART4
+ // |RCC_PERIPHCLK_SPI1|RCC_PERIPHCLK_ADC
+ // |RCC_PERIPHCLK_I2C1| */
+ // // PeriphClkInitStruct.PLL2.PLL2M = 1;
+ // // PeriphClkInitStruct.PLL2.PLL2N = 19;
+ // // PeriphClkInitStruct.PLL2.PLL2P = 2;
+ // // PeriphClkInitStruct.PLL2.PLL2Q = 2;
+ // // PeriphClkInitStruct.PLL2.PLL2R = 2;
+ // // PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3;
+ // // PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM;
+ // // PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
+ // PeriphClkInitStruct.PLL3.PLL3M = 4;
+ // PeriphClkInitStruct.PLL3.PLL3N = 120;
+ // PeriphClkInitStruct.PLL3.PLL3P = 2;
+ // PeriphClkInitStruct.PLL3.PLL3Q = 5;
+ // PeriphClkInitStruct.PLL3.PLL3R = 2;
+ // PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_1;
+ // PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOWIDE;
+ // PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
+ // PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL;
+ // PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
+ // PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_D2PCLK1;
+ // PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3;
+ // PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2;
+ // if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ // {
+
+ // }
+
+}
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c b/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c
new file mode 100644
index 000000000..d51ff53c1
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c
@@ -0,0 +1,48 @@
+/*
+ * This file is part of the Micro Python project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "gpio.h"
+#include "common-hal/microcontroller/Pin.h"
+
+void stm32_peripherals_gpio_init(void) {
+ //Enable all GPIO for now
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOF_CLK_ENABLE();
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ __HAL_RCC_GPIOG_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+
+ //Never reset pins
+ never_reset_pin_number(2,14); //PC14 OSC32_IN
+ never_reset_pin_number(2,15); //PC15 OSC32_OUT
+ never_reset_pin_number(0,13); //PA13 SWDIO
+ never_reset_pin_number(0,14); //PA14 SWCLK
+}
+
+
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c
new file mode 100644
index 000000000..892164600
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c
@@ -0,0 +1,260 @@
+ /*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "py/obj.h"
+#include "py/mphal.h"
+#include "peripherals/pins.h"
+#include "peripherals/periph.h"
+
+// I2C
+
+I2C_TypeDef * mcu_i2c_banks[4] = {I2C1, I2C2, I2C3, I2C4};
+
+const mcu_periph_obj_t mcu_i2c_sda_list[12] = {
+ PERIPH(1, 4, &pin_PB07),
+ PERIPH(4, 6, &pin_PB07),
+ PERIPH(1, 4, &pin_PB09),
+ PERIPH(4, 6, &pin_PB09),
+ PERIPH(2, 4, &pin_PB11),
+ PERIPH(3, 4, &pin_PC09),
+ PERIPH(4, 4, &pin_PD13),
+ PERIPH(2, 4, &pin_PF00),
+ PERIPH(4, 4, &pin_PF15),
+ PERIPH(2, 4, &pin_PH05),
+ PERIPH(3, 4, &pin_PH08),
+ PERIPH(4, 4, &pin_PH12)
+};
+
+const mcu_periph_obj_t mcu_i2c_scl_list[12] = {
+ PERIPH(3, 4, &pin_PA08),
+ PERIPH(1, 4, &pin_PB06),
+ PERIPH(4, 6, &pin_PB06),
+ PERIPH(1, 4, &pin_PB08),
+ PERIPH(4, 6, &pin_PB08),
+ PERIPH(2, 4, &pin_PB10),
+ PERIPH(4, 4, &pin_PD12),
+ PERIPH(2, 4, &pin_PF01),
+ PERIPH(4, 4, &pin_PF14),
+ PERIPH(2, 4, &pin_PH04),
+ PERIPH(3, 4, &pin_PH07),
+ PERIPH(4, 4, &pin_PH11)
+};
+
+// SPI
+
+SPI_TypeDef * mcu_spi_banks[6] = {SPI1, SPI2, SPI3, SPI4, SPI5, SPI6};
+
+const mcu_periph_obj_t mcu_spi_sck_list[19] = {
+ PERIPH(1, 5, &pin_PA05),
+ PERIPH(6, 8, &pin_PA05),
+ PERIPH(2, 5, &pin_PA09),
+ PERIPH(2, 5, &pin_PA12),
+ PERIPH(1, 5, &pin_PB03),
+ PERIPH(3, 6, &pin_PB03),
+ PERIPH(6, 8, &pin_PB03),
+ PERIPH(2, 5, &pin_PB10),
+ PERIPH(2, 5, &pin_PB13),
+ PERIPH(3, 6, &pin_PC10),
+ PERIPH(2, 5, &pin_PD03),
+ PERIPH(4, 5, &pin_PE02),
+ PERIPH(4, 5, &pin_PE12),
+ PERIPH(5, 5, &pin_PF07),
+ PERIPH(1, 5, &pin_PG11),
+ PERIPH(6, 5, &pin_PG13),
+ PERIPH(5, 5, &pin_PH06),
+ PERIPH(2, 5, &pin_PI01),
+ PERIPH(5, 5, &pin_PK00),
+};
+
+const mcu_periph_obj_t mcu_spi_mosi_list[19] = {
+ PERIPH(1, 5, &pin_PA07),
+ PERIPH(6, 8, &pin_PA07),
+ PERIPH(3, 7, &pin_PB02),
+ PERIPH(1, 5, &pin_PB05),
+ PERIPH(3, 7, &pin_PB05),
+ PERIPH(6, 8, &pin_PB05),
+ PERIPH(2, 5, &pin_PB15),
+ PERIPH(2, 5, &pin_PC01),
+ PERIPH(2, 5, &pin_PC03),
+ PERIPH(3, 6, &pin_PC12),
+ PERIPH(3, 5, &pin_PD06),
+ PERIPH(1, 5, &pin_PD07),
+ PERIPH(4, 5, &pin_PE06),
+ PERIPH(4, 5, &pin_PE14),
+ PERIPH(5, 5, &pin_PF09),
+ PERIPH(5, 5, &pin_PF11),
+ PERIPH(6, 5, &pin_PG14),
+ PERIPH(2, 5, &pin_PI03),
+ PERIPH(5, 5, &pin_PJ10),
+};
+
+const mcu_periph_obj_t mcu_spi_miso_list[16] = {
+ PERIPH(1, 5, &pin_PA06),
+ PERIPH(6, 8, &pin_PA06),
+ PERIPH(1, 5, &pin_PB04),
+ PERIPH(3, 6, &pin_PB04),
+ PERIPH(6, 8, &pin_PB04),
+ PERIPH(2, 5, &pin_PB14),
+ PERIPH(2, 5, &pin_PC02),
+ PERIPH(3, 6, &pin_PC11),
+ PERIPH(4, 5, &pin_PE05),
+ PERIPH(4, 5, &pin_PE13),
+ PERIPH(5, 5, &pin_PF08),
+ PERIPH(1, 5, &pin_PG09),
+ PERIPH(6, 5, &pin_PG12),
+ PERIPH(5, 5, &pin_PH07),
+ PERIPH(2, 5, &pin_PI02),
+ PERIPH(5, 5, &pin_PJ11),
+};
+
+//UART
+
+USART_TypeDef * mcu_uart_banks[MAX_UART] = {USART1, USART2, USART3, UART4, UART5, USART6, UART7, UART8};
+bool mcu_uart_has_usart[MAX_UART] = {true, true, true, true, true, true, true, true};
+
+const mcu_periph_obj_t mcu_uart_tx_list[25] = {
+ PERIPH(4, 8, &pin_PA00),
+ PERIPH(2, 7, &pin_PA02),
+ PERIPH(1, 7, &pin_PA09),
+ PERIPH(4, 6, &pin_PA12),
+ PERIPH(7, 11, &pin_PA15),
+ PERIPH(7, 11, &pin_PB04),
+ PERIPH(1, 7, &pin_PB06),
+ PERIPH(5, 14, &pin_PB06),
+ PERIPH(4, 8, &pin_PB09),
+ PERIPH(3, 7, &pin_PB10),
+ PERIPH(5, 14, &pin_PB13),
+ PERIPH(1, 4, &pin_PB14),
+ PERIPH(6, 7, &pin_PC06),
+ PERIPH(3, 7, &pin_PC10),
+ PERIPH(4, 8, &pin_PC10),
+ PERIPH(5, 8, &pin_PC12),
+ PERIPH(4, 8, &pin_PD01),
+ PERIPH(2, 7, &pin_PD05),
+ PERIPH(3, 7, &pin_PD08),
+ PERIPH(8, 8, &pin_PE01),
+ PERIPH(7, 7, &pin_PE08),
+ PERIPH(7, 7, &pin_PF07),
+ PERIPH(6, 7, &pin_PG14),
+ PERIPH(4, 8, &pin_PH13),
+ PERIPH(8, 8, &pin_PJ08),
+};
+
+const mcu_periph_obj_t mcu_uart_rx_list[26] = {
+ PERIPH(4, 8, &pin_PA01),
+ PERIPH(2, 7, &pin_PA03),
+ PERIPH(7, 11, &pin_PA08),
+ PERIPH(1, 7, &pin_PA10),
+ PERIPH(4, 6, &pin_PA11),
+ PERIPH(7, 11, &pin_PB03),
+ PERIPH(5, 14, &pin_PB05),
+ PERIPH(1, 7, &pin_PB07),
+ PERIPH(4, 8, &pin_PB08),
+ PERIPH(3, 7, &pin_PB11),
+ PERIPH(5, 14, &pin_PB12),
+ PERIPH(1, 4, &pin_PB15),
+ PERIPH(6, 7, &pin_PC07),
+ PERIPH(3, 7, &pin_PC11),
+ PERIPH(4, 8, &pin_PC11),
+ PERIPH(4, 8, &pin_PD00),
+ PERIPH(5, 8, &pin_PD02),
+ PERIPH(2, 7, &pin_PD06),
+ PERIPH(3, 7, &pin_PD09),
+ PERIPH(8, 8, &pin_PE00),
+ PERIPH(7, 7, &pin_PE07),
+ PERIPH(7, 7, &pin_PF06),
+ PERIPH(6, 7, &pin_PG09),
+ PERIPH(4, 8, &pin_PH14),
+ PERIPH(4, 8, &pin_PI09),
+ PERIPH(8, 8, &pin_PJ09),
+};
+
+//Timers
+//TIM6 and TIM7 are basic timers that are only used by DAC, and don't have pins
+//TODO: H7 has more timers than this, but are they tied to pins?
+TIM_TypeDef * mcu_tim_banks[14] = {TIM1, TIM2, TIM3, TIM4, TIM5, NULL, NULL, TIM8, NULL, NULL,
+ NULL, TIM12, TIM13, TIM14};
+
+const mcu_tim_pin_obj_t mcu_tim_pin_list[58] = {
+ TIM(2, 1, 1, &pin_PA00),
+ TIM(5, 2, 1, &pin_PA00),
+ TIM(2, 1, 2, &pin_PA01),
+ TIM(5, 2, 2, &pin_PA01),
+ TIM(2, 1, 3, &pin_PA02),
+ TIM(5, 2, 3, &pin_PA02),
+ TIM(2, 1, 4, &pin_PA03),
+ TIM(5, 2, 4, &pin_PA03),
+ TIM(2, 1, 1, &pin_PA05),
+ TIM(3, 2, 1, &pin_PA06),
+ TIM(3, 2, 2, &pin_PA07),
+ TIM(1, 1, 1, &pin_PA08),
+ TIM(1, 1, 2, &pin_PA09),
+ TIM(1, 1, 3, &pin_PA10),
+ TIM(1, 1, 4, &pin_PA11),
+ TIM(2, 1, 1, &pin_PA15),
+ TIM(3, 2, 3, &pin_PB00),
+ TIM(3, 2, 4, &pin_PB01),
+ TIM(2, 1, 2, &pin_PB03),
+ TIM(3, 2, 1, &pin_PB04),
+ TIM(3, 2, 2, &pin_PB05),
+ TIM(4, 2, 1, &pin_PB06),
+ TIM(4, 2, 2, &pin_PB07),
+ TIM(4, 2, 3, &pin_PB08),
+ TIM(4, 2, 4, &pin_PB09),
+ TIM(2, 1, 3, &pin_PB10),
+ TIM(2, 1, 4, &pin_PB11),
+ TIM(3, 2, 1, &pin_PC06),
+ TIM(8, 3, 1, &pin_PC06),
+ TIM(3, 2, 2, &pin_PC07),
+ TIM(8, 3, 2, &pin_PC07),
+ TIM(3, 2, 3, &pin_PC08),
+ TIM(8, 3, 3, &pin_PC08),
+ TIM(3, 2, 4, &pin_PC09),
+ TIM(8, 3, 4, &pin_PC09),
+ TIM(4, 2, 1, &pin_PD12),
+ TIM(4, 2, 2, &pin_PD13),
+ TIM(4, 2, 3, &pin_PD14),
+ TIM(4, 2, 4, &pin_PD15),
+ TIM(1, 1, 1, &pin_PE09),
+ TIM(1, 1, 2, &pin_PE11),
+ TIM(1, 1, 3, &pin_PE13),
+ TIM(1, 1, 4, &pin_PE14),
+ TIM(5, 2, 1, &pin_PH10),
+ TIM(5, 2, 2, &pin_PH11),
+ TIM(5, 2, 3, &pin_PH12),
+ TIM(5, 2, 4, &pin_PI00),
+ TIM(8, 3, 4, &pin_PI02),
+ TIM(8, 3, 1, &pin_PI05),
+ TIM(8, 3, 2, &pin_PI06),
+ TIM(8, 3, 3, &pin_PI07),
+ TIM(8, 3, 2, &pin_PJ06),
+ TIM(8, 3, 1, &pin_PJ08),
+ TIM(1, 1, 3, &pin_PJ09),
+ TIM(8, 3, 2, &pin_PJ10),
+ TIM(1, 1, 2, &pin_PJ11),
+ TIM(8, 3, 3, &pin_PK00),
+ TIM(1, 1, 1, &pin_PK01),
+};
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h
new file mode 100644
index 000000000..4b852413b
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h
@@ -0,0 +1,55 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H
+
+//I2C
+extern I2C_TypeDef * mcu_i2c_banks[4];
+
+const mcu_periph_obj_t mcu_i2c_sda_list[12];
+const mcu_periph_obj_t mcu_i2c_scl_list[12];
+
+//SPI
+extern SPI_TypeDef * mcu_spi_banks[6];
+
+const mcu_periph_obj_t mcu_spi_sck_list[19];
+const mcu_periph_obj_t mcu_spi_mosi_list[19];
+const mcu_periph_obj_t mcu_spi_miso_list[16];
+
+//UART
+extern USART_TypeDef * mcu_uart_banks[MAX_UART];
+extern bool mcu_uart_has_usart[MAX_UART];
+
+const mcu_periph_obj_t mcu_uart_tx_list[25];
+const mcu_periph_obj_t mcu_uart_rx_list[26];
+
+//Timers
+#define TIM_BANK_ARRAY_LEN 14
+#define TIM_PIN_ARRAY_LEN 58
+TIM_TypeDef * mcu_tim_banks[TIM_BANK_ARRAY_LEN];
+
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H \ No newline at end of file
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c
new file mode 100644
index 000000000..491fe6938
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c
@@ -0,0 +1,210 @@
+ /*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "py/obj.h"
+#include "py/mphal.h"
+#include "peripherals/pins.h"
+
+// Todo: some pins do have ADCs, but the module isn't set up yet.
+
+const mcu_pin_obj_t pin_PA00 = PIN(0, 0, NO_ADC);
+const mcu_pin_obj_t pin_PA01 = PIN(0, 1, NO_ADC);
+const mcu_pin_obj_t pin_PA02 = PIN(0, 2, NO_ADC);
+const mcu_pin_obj_t pin_PA03 = PIN(0, 3, NO_ADC);
+const mcu_pin_obj_t pin_PA04 = PIN(0, 4, NO_ADC);
+const mcu_pin_obj_t pin_PA05 = PIN(0, 5, NO_ADC);
+const mcu_pin_obj_t pin_PA06 = PIN(0, 6, NO_ADC);
+const mcu_pin_obj_t pin_PA07 = PIN(0, 7, NO_ADC);
+const mcu_pin_obj_t pin_PA08 = PIN(0, 8, NO_ADC);
+const mcu_pin_obj_t pin_PA09 = PIN(0, 9, NO_ADC);
+const mcu_pin_obj_t pin_PA10 = PIN(0, 10, NO_ADC);
+const mcu_pin_obj_t pin_PA11 = PIN(0, 11, NO_ADC);
+const mcu_pin_obj_t pin_PA12 = PIN(0, 12, NO_ADC);
+const mcu_pin_obj_t pin_PA13 = PIN(0, 13, NO_ADC);
+const mcu_pin_obj_t pin_PA14 = PIN(0, 14, NO_ADC);
+const mcu_pin_obj_t pin_PA15 = PIN(0, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PB00 = PIN(1, 0, NO_ADC);
+const mcu_pin_obj_t pin_PB01 = PIN(1, 1, NO_ADC);
+const mcu_pin_obj_t pin_PB02 = PIN(1, 2, NO_ADC);
+const mcu_pin_obj_t pin_PB03 = PIN(1, 3, NO_ADC);
+const mcu_pin_obj_t pin_PB04 = PIN(1, 4, NO_ADC);
+const mcu_pin_obj_t pin_PB05 = PIN(1, 5, NO_ADC);
+const mcu_pin_obj_t pin_PB06 = PIN(1, 6, NO_ADC);
+const mcu_pin_obj_t pin_PB07 = PIN(1, 7, NO_ADC);
+const mcu_pin_obj_t pin_PB08 = PIN(1, 8, NO_ADC);
+const mcu_pin_obj_t pin_PB09 = PIN(1, 9, NO_ADC);
+const mcu_pin_obj_t pin_PB10 = PIN(1, 10, NO_ADC);
+const mcu_pin_obj_t pin_PB11 = PIN(1, 11, NO_ADC);
+const mcu_pin_obj_t pin_PB12 = PIN(1, 12, NO_ADC);
+const mcu_pin_obj_t pin_PB13 = PIN(1, 13, NO_ADC);
+const mcu_pin_obj_t pin_PB14 = PIN(1, 14, NO_ADC);
+const mcu_pin_obj_t pin_PB15 = PIN(1, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PC00 = PIN(2, 0, NO_ADC);
+const mcu_pin_obj_t pin_PC01 = PIN(2, 1, NO_ADC);
+const mcu_pin_obj_t pin_PC02 = PIN(2, 2, NO_ADC);
+const mcu_pin_obj_t pin_PC03 = PIN(2, 3, NO_ADC);
+const mcu_pin_obj_t pin_PC04 = PIN(2, 4, NO_ADC);
+const mcu_pin_obj_t pin_PC05 = PIN(2, 5, NO_ADC);
+const mcu_pin_obj_t pin_PC06 = PIN(2, 6, NO_ADC);
+const mcu_pin_obj_t pin_PC07 = PIN(2, 7, NO_ADC);
+const mcu_pin_obj_t pin_PC08 = PIN(2, 8, NO_ADC);
+const mcu_pin_obj_t pin_PC09 = PIN(2, 9, NO_ADC);
+const mcu_pin_obj_t pin_PC10 = PIN(2, 10, NO_ADC);
+const mcu_pin_obj_t pin_PC11 = PIN(2, 11, NO_ADC);
+const mcu_pin_obj_t pin_PC12 = PIN(2, 12, NO_ADC);
+const mcu_pin_obj_t pin_PC13 = PIN(2, 13, NO_ADC);
+const mcu_pin_obj_t pin_PC14 = PIN(2, 14, NO_ADC);
+const mcu_pin_obj_t pin_PC15 = PIN(2, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PD00 = PIN(3, 0, NO_ADC);
+const mcu_pin_obj_t pin_PD01 = PIN(3, 1, NO_ADC);
+const mcu_pin_obj_t pin_PD02 = PIN(3, 2, NO_ADC);
+const mcu_pin_obj_t pin_PD03 = PIN(3, 3, NO_ADC);
+const mcu_pin_obj_t pin_PD04 = PIN(3, 4, NO_ADC);
+const mcu_pin_obj_t pin_PD05 = PIN(3, 5, NO_ADC);
+const mcu_pin_obj_t pin_PD06 = PIN(3, 6, NO_ADC);
+const mcu_pin_obj_t pin_PD07 = PIN(3, 7, NO_ADC);
+const mcu_pin_obj_t pin_PD08 = PIN(3, 8, NO_ADC);
+const mcu_pin_obj_t pin_PD09 = PIN(3, 9, NO_ADC);
+const mcu_pin_obj_t pin_PD10 = PIN(3, 10, NO_ADC);
+const mcu_pin_obj_t pin_PD11 = PIN(3, 11, NO_ADC);
+const mcu_pin_obj_t pin_PD12 = PIN(3, 12, NO_ADC);
+const mcu_pin_obj_t pin_PD13 = PIN(3, 13, NO_ADC);
+const mcu_pin_obj_t pin_PD14 = PIN(3, 14, NO_ADC);
+const mcu_pin_obj_t pin_PD15 = PIN(3, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PE00 = PIN(4, 0, NO_ADC);
+const mcu_pin_obj_t pin_PE01 = PIN(4, 1, NO_ADC);
+const mcu_pin_obj_t pin_PE02 = PIN(4, 2, NO_ADC);
+const mcu_pin_obj_t pin_PE03 = PIN(4, 3, NO_ADC);
+const mcu_pin_obj_t pin_PE04 = PIN(4, 4, NO_ADC);
+const mcu_pin_obj_t pin_PE05 = PIN(4, 5, NO_ADC);
+const mcu_pin_obj_t pin_PE06 = PIN(4, 6, NO_ADC);
+const mcu_pin_obj_t pin_PE07 = PIN(4, 7, NO_ADC);
+const mcu_pin_obj_t pin_PE08 = PIN(4, 8, NO_ADC);
+const mcu_pin_obj_t pin_PE09 = PIN(4, 9, NO_ADC);
+const mcu_pin_obj_t pin_PE10 = PIN(4, 10, NO_ADC);
+const mcu_pin_obj_t pin_PE11 = PIN(4, 11, NO_ADC);
+const mcu_pin_obj_t pin_PE12 = PIN(4, 12, NO_ADC);
+const mcu_pin_obj_t pin_PE13 = PIN(4, 13, NO_ADC);
+const mcu_pin_obj_t pin_PE14 = PIN(4, 14, NO_ADC);
+const mcu_pin_obj_t pin_PE15 = PIN(4, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PF00 = PIN(5, 0, NO_ADC);
+const mcu_pin_obj_t pin_PF01 = PIN(5, 1, NO_ADC);
+const mcu_pin_obj_t pin_PF02 = PIN(5, 2, NO_ADC);
+const mcu_pin_obj_t pin_PF03 = PIN(5, 3, NO_ADC);
+const mcu_pin_obj_t pin_PF04 = PIN(5, 4, NO_ADC);
+const mcu_pin_obj_t pin_PF05 = PIN(5, 5, NO_ADC);
+const mcu_pin_obj_t pin_PF06 = PIN(5, 6, NO_ADC);
+const mcu_pin_obj_t pin_PF07 = PIN(5, 7, NO_ADC);
+const mcu_pin_obj_t pin_PF08 = PIN(5, 8, NO_ADC);
+const mcu_pin_obj_t pin_PF09 = PIN(5, 9, NO_ADC);
+const mcu_pin_obj_t pin_PF10 = PIN(5, 10, NO_ADC);
+const mcu_pin_obj_t pin_PF11 = PIN(5, 11, NO_ADC);
+const mcu_pin_obj_t pin_PF12 = PIN(5, 12, NO_ADC);
+const mcu_pin_obj_t pin_PF13 = PIN(5, 13, NO_ADC);
+const mcu_pin_obj_t pin_PF14 = PIN(5, 14, NO_ADC);
+const mcu_pin_obj_t pin_PF15 = PIN(5, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PG00 = PIN(6, 0, NO_ADC);
+const mcu_pin_obj_t pin_PG01 = PIN(6, 1, NO_ADC);
+const mcu_pin_obj_t pin_PG02 = PIN(6, 2, NO_ADC);
+const mcu_pin_obj_t pin_PG03 = PIN(6, 3, NO_ADC);
+const mcu_pin_obj_t pin_PG04 = PIN(6, 4, NO_ADC);
+const mcu_pin_obj_t pin_PG05 = PIN(6, 5, NO_ADC);
+const mcu_pin_obj_t pin_PG06 = PIN(6, 6, NO_ADC);
+const mcu_pin_obj_t pin_PG07 = PIN(6, 7, NO_ADC);
+const mcu_pin_obj_t pin_PG08 = PIN(6, 8, NO_ADC);
+const mcu_pin_obj_t pin_PG09 = PIN(6, 9, NO_ADC);
+const mcu_pin_obj_t pin_PG10 = PIN(6, 10, NO_ADC);
+const mcu_pin_obj_t pin_PG11 = PIN(6, 11, NO_ADC);
+const mcu_pin_obj_t pin_PG12 = PIN(6, 12, NO_ADC);
+const mcu_pin_obj_t pin_PG13 = PIN(6, 13, NO_ADC);
+const mcu_pin_obj_t pin_PG14 = PIN(6, 14, NO_ADC);
+const mcu_pin_obj_t pin_PG15 = PIN(6, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PH00 = PIN(7, 0, NO_ADC);
+const mcu_pin_obj_t pin_PH01 = PIN(7, 1, NO_ADC);
+const mcu_pin_obj_t pin_PH02 = PIN(7, 2, NO_ADC);
+const mcu_pin_obj_t pin_PH03 = PIN(7, 3, NO_ADC);
+const mcu_pin_obj_t pin_PH04 = PIN(7, 4, NO_ADC);
+const mcu_pin_obj_t pin_PH05 = PIN(7, 5, NO_ADC);
+const mcu_pin_obj_t pin_PH06 = PIN(7, 6, NO_ADC);
+const mcu_pin_obj_t pin_PH07 = PIN(7, 7, NO_ADC);
+const mcu_pin_obj_t pin_PH08 = PIN(7, 8, NO_ADC);
+const mcu_pin_obj_t pin_PH09 = PIN(7, 9, NO_ADC);
+const mcu_pin_obj_t pin_PH10 = PIN(7, 10, NO_ADC);
+const mcu_pin_obj_t pin_PH11 = PIN(7, 11, NO_ADC);
+const mcu_pin_obj_t pin_PH12 = PIN(7, 12, NO_ADC);
+const mcu_pin_obj_t pin_PH13 = PIN(7, 13, NO_ADC);
+const mcu_pin_obj_t pin_PH14 = PIN(7, 14, NO_ADC);
+const mcu_pin_obj_t pin_PH15 = PIN(7, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PI00 = PIN(8, 0, NO_ADC);
+const mcu_pin_obj_t pin_PI01 = PIN(8, 1, NO_ADC);
+const mcu_pin_obj_t pin_PI02 = PIN(8, 2, NO_ADC);
+const mcu_pin_obj_t pin_PI03 = PIN(8, 3, NO_ADC);
+const mcu_pin_obj_t pin_PI04 = PIN(8, 4, NO_ADC);
+const mcu_pin_obj_t pin_PI05 = PIN(8, 5, NO_ADC);
+const mcu_pin_obj_t pin_PI06 = PIN(8, 6, NO_ADC);
+const mcu_pin_obj_t pin_PI07 = PIN(8, 7, NO_ADC);
+const mcu_pin_obj_t pin_PI08 = PIN(8, 8, NO_ADC);
+const mcu_pin_obj_t pin_PI09 = PIN(8, 9, NO_ADC);
+const mcu_pin_obj_t pin_PI10 = PIN(8, 10, NO_ADC);
+const mcu_pin_obj_t pin_PI11 = PIN(8, 11, NO_ADC);
+const mcu_pin_obj_t pin_PI12 = PIN(8, 12, NO_ADC);
+const mcu_pin_obj_t pin_PI13 = PIN(8, 13, NO_ADC);
+const mcu_pin_obj_t pin_PI14 = PIN(8, 14, NO_ADC);
+const mcu_pin_obj_t pin_PI15 = PIN(8, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PJ00 = PIN(9, 0, NO_ADC);
+const mcu_pin_obj_t pin_PJ01 = PIN(9, 1, NO_ADC);
+const mcu_pin_obj_t pin_PJ02 = PIN(9, 2, NO_ADC);
+const mcu_pin_obj_t pin_PJ03 = PIN(9, 3, NO_ADC);
+const mcu_pin_obj_t pin_PJ04 = PIN(9, 4, NO_ADC);
+const mcu_pin_obj_t pin_PJ05 = PIN(9, 5, NO_ADC);
+const mcu_pin_obj_t pin_PJ06 = PIN(9, 6, NO_ADC);
+const mcu_pin_obj_t pin_PJ07 = PIN(9, 7, NO_ADC);
+const mcu_pin_obj_t pin_PJ08 = PIN(9, 8, NO_ADC);
+const mcu_pin_obj_t pin_PJ09 = PIN(9, 9, NO_ADC);
+const mcu_pin_obj_t pin_PJ10 = PIN(9, 10, NO_ADC);
+const mcu_pin_obj_t pin_PJ11 = PIN(9, 11, NO_ADC);
+const mcu_pin_obj_t pin_PJ12 = PIN(9, 12, NO_ADC);
+const mcu_pin_obj_t pin_PJ13 = PIN(9, 13, NO_ADC);
+const mcu_pin_obj_t pin_PJ14 = PIN(9, 14, NO_ADC);
+const mcu_pin_obj_t pin_PJ15 = PIN(9, 15, NO_ADC);
+
+const mcu_pin_obj_t pin_PK00 = PIN(10, 0, NO_ADC);
+const mcu_pin_obj_t pin_PK01 = PIN(10, 1, NO_ADC);
+const mcu_pin_obj_t pin_PK02 = PIN(10, 2, NO_ADC);
+const mcu_pin_obj_t pin_PK03 = PIN(10, 3, NO_ADC);
+const mcu_pin_obj_t pin_PK04 = PIN(10, 4, NO_ADC);
+const mcu_pin_obj_t pin_PK05 = PIN(10, 5, NO_ADC);
+const mcu_pin_obj_t pin_PK06 = PIN(10, 6, NO_ADC);
+const mcu_pin_obj_t pin_PK07 = PIN(10, 7, NO_ADC);
diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h
new file mode 100644
index 000000000..7c4650dca
--- /dev/null
+++ b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h
@@ -0,0 +1,199 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 Lucian Copeland for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H
+#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H
+
+extern const mcu_pin_obj_t pin_PA00;
+extern const mcu_pin_obj_t pin_PA01;
+extern const mcu_pin_obj_t pin_PA02;
+extern const mcu_pin_obj_t pin_PA03;
+extern const mcu_pin_obj_t pin_PA04;
+extern const mcu_pin_obj_t pin_PA05;
+extern const mcu_pin_obj_t pin_PA06;
+extern const mcu_pin_obj_t pin_PA07;
+extern const mcu_pin_obj_t pin_PA08;
+extern const mcu_pin_obj_t pin_PA09;
+extern const mcu_pin_obj_t pin_PA10;
+extern const mcu_pin_obj_t pin_PA11;
+extern const mcu_pin_obj_t pin_PA12;
+extern const mcu_pin_obj_t pin_PA13;
+extern const mcu_pin_obj_t pin_PA14;
+extern const mcu_pin_obj_t pin_PA15;
+extern const mcu_pin_obj_t pin_PB00;
+extern const mcu_pin_obj_t pin_PB01;
+extern const mcu_pin_obj_t pin_PB02;
+extern const mcu_pin_obj_t pin_PB03;
+extern const mcu_pin_obj_t pin_PB04;
+extern const mcu_pin_obj_t pin_PB05;
+extern const mcu_pin_obj_t pin_PB06;
+extern const mcu_pin_obj_t pin_PB07;
+extern const mcu_pin_obj_t pin_PB08;
+extern const mcu_pin_obj_t pin_PB09;
+extern const mcu_pin_obj_t pin_PB10;
+extern const mcu_pin_obj_t pin_PB11;
+extern const mcu_pin_obj_t pin_PB12;
+extern const mcu_pin_obj_t pin_PB13;
+extern const mcu_pin_obj_t pin_PB14;
+extern const mcu_pin_obj_t pin_PB15;
+extern const mcu_pin_obj_t pin_PC00;
+extern const mcu_pin_obj_t pin_PC01;
+extern const mcu_pin_obj_t pin_PC02;
+extern const mcu_pin_obj_t pin_PC03;
+extern const mcu_pin_obj_t pin_PC04;
+extern const mcu_pin_obj_t pin_PC05;
+extern const mcu_pin_obj_t pin_PC06;
+extern const mcu_pin_obj_t pin_PC07;
+extern const mcu_pin_obj_t pin_PC08;
+extern const mcu_pin_obj_t pin_PC09;
+extern const mcu_pin_obj_t pin_PC10;
+extern const mcu_pin_obj_t pin_PC11;
+extern const mcu_pin_obj_t pin_PC12;
+extern const mcu_pin_obj_t pin_PC13;
+extern const mcu_pin_obj_t pin_PC14;
+extern const mcu_pin_obj_t pin_PC15;
+extern const mcu_pin_obj_t pin_PD00;
+extern const mcu_pin_obj_t pin_PD01;
+extern const mcu_pin_obj_t pin_PD02;
+extern const mcu_pin_obj_t pin_PD03;
+extern const mcu_pin_obj_t pin_PD04;
+extern const mcu_pin_obj_t pin_PD05;
+extern const mcu_pin_obj_t pin_PD06;
+extern const mcu_pin_obj_t pin_PD07;
+extern const mcu_pin_obj_t pin_PD08;
+extern const mcu_pin_obj_t pin_PD09;
+extern const mcu_pin_obj_t pin_PD10;
+extern const mcu_pin_obj_t pin_PD11;
+extern const mcu_pin_obj_t pin_PD12;
+extern const mcu_pin_obj_t pin_PD13;
+extern const mcu_pin_obj_t pin_PD14;
+extern const mcu_pin_obj_t pin_PD15;
+extern const mcu_pin_obj_t pin_PE00;
+extern const mcu_pin_obj_t pin_PE01;
+extern const mcu_pin_obj_t pin_PE02;
+extern const mcu_pin_obj_t pin_PE03;
+extern const mcu_pin_obj_t pin_PE04;
+extern const mcu_pin_obj_t pin_PE05;
+extern const mcu_pin_obj_t pin_PE06;
+extern const mcu_pin_obj_t pin_PE07;
+extern const mcu_pin_obj_t pin_PE08;
+extern const mcu_pin_obj_t pin_PE09;
+extern const mcu_pin_obj_t pin_PE10;
+extern const mcu_pin_obj_t pin_PE11;
+extern const mcu_pin_obj_t pin_PE12;
+extern const mcu_pin_obj_t pin_PE13;
+extern const mcu_pin_obj_t pin_PE14;
+extern const mcu_pin_obj_t pin_PE15;
+extern const mcu_pin_obj_t pin_PF00;
+extern const mcu_pin_obj_t pin_PF01;
+extern const mcu_pin_obj_t pin_PF02;
+extern const mcu_pin_obj_t pin_PF03;
+extern const mcu_pin_obj_t pin_PF04;
+extern const mcu_pin_obj_t pin_PF05;
+extern const mcu_pin_obj_t pin_PF06;
+extern const mcu_pin_obj_t pin_PF07;
+extern const mcu_pin_obj_t pin_PF08;
+extern const mcu_pin_obj_t pin_PF09;
+extern const mcu_pin_obj_t pin_PF10;
+extern const mcu_pin_obj_t pin_PF11;
+extern const mcu_pin_obj_t pin_PF12;
+extern const mcu_pin_obj_t pin_PF13;
+extern const mcu_pin_obj_t pin_PF14;
+extern const mcu_pin_obj_t pin_PF15;
+extern const mcu_pin_obj_t pin_PG00;
+extern const mcu_pin_obj_t pin_PG01;
+extern const mcu_pin_obj_t pin_PG02;
+extern const mcu_pin_obj_t pin_PG03;
+extern const mcu_pin_obj_t pin_PG04;
+extern const mcu_pin_obj_t pin_PG05;
+extern const mcu_pin_obj_t pin_PG06;
+extern const mcu_pin_obj_t pin_PG07;
+extern const mcu_pin_obj_t pin_PG08;
+extern const mcu_pin_obj_t pin_PG09;
+extern const mcu_pin_obj_t pin_PG10;
+extern const mcu_pin_obj_t pin_PG11;
+extern const mcu_pin_obj_t pin_PG12;
+extern const mcu_pin_obj_t pin_PG13;
+extern const mcu_pin_obj_t pin_PG14;
+extern const mcu_pin_obj_t pin_PG15;
+extern const mcu_pin_obj_t pin_PH00;
+extern const mcu_pin_obj_t pin_PH01;
+extern const mcu_pin_obj_t pin_PH02;
+extern const mcu_pin_obj_t pin_PH03;
+extern const mcu_pin_obj_t pin_PH04;
+extern const mcu_pin_obj_t pin_PH05;
+extern const mcu_pin_obj_t pin_PH06;
+extern const mcu_pin_obj_t pin_PH07;
+extern const mcu_pin_obj_t pin_PH08;
+extern const mcu_pin_obj_t pin_PH09;
+extern const mcu_pin_obj_t pin_PH10;
+extern const mcu_pin_obj_t pin_PH11;
+extern const mcu_pin_obj_t pin_PH12;
+extern const mcu_pin_obj_t pin_PH13;
+extern const mcu_pin_obj_t pin_PH14;
+extern const mcu_pin_obj_t pin_PH15;
+extern const mcu_pin_obj_t pin_PI00;
+extern const mcu_pin_obj_t pin_PI01;
+extern const mcu_pin_obj_t pin_PI02;
+extern const mcu_pin_obj_t pin_PI03;
+extern const mcu_pin_obj_t pin_PI04;
+extern const mcu_pin_obj_t pin_PI05;
+extern const mcu_pin_obj_t pin_PI06;
+extern const mcu_pin_obj_t pin_PI07;
+extern const mcu_pin_obj_t pin_PI08;
+extern const mcu_pin_obj_t pin_PI09;
+extern const mcu_pin_obj_t pin_PI10;
+extern const mcu_pin_obj_t pin_PI11;
+extern const mcu_pin_obj_t pin_PI12;
+extern const mcu_pin_obj_t pin_PI13;
+extern const mcu_pin_obj_t pin_PI14;
+extern const mcu_pin_obj_t pin_PI15;
+extern const mcu_pin_obj_t pin_PJ00;
+extern const mcu_pin_obj_t pin_PJ01;
+extern const mcu_pin_obj_t pin_PJ02;
+extern const mcu_pin_obj_t pin_PJ03;
+extern const mcu_pin_obj_t pin_PJ04;
+extern const mcu_pin_obj_t pin_PJ05;
+extern const mcu_pin_obj_t pin_PJ06;
+extern const mcu_pin_obj_t pin_PJ07;
+extern const mcu_pin_obj_t pin_PJ08;
+extern const mcu_pin_obj_t pin_PJ09;
+extern const mcu_pin_obj_t pin_PJ10;
+extern const mcu_pin_obj_t pin_PJ11;
+extern const mcu_pin_obj_t pin_PJ12;
+extern const mcu_pin_obj_t pin_PJ13;
+extern const mcu_pin_obj_t pin_PJ14;
+extern const mcu_pin_obj_t pin_PJ15;
+extern const mcu_pin_obj_t pin_PK00;
+extern const mcu_pin_obj_t pin_PK01;
+extern const mcu_pin_obj_t pin_PK02;
+extern const mcu_pin_obj_t pin_PK03;
+extern const mcu_pin_obj_t pin_PK04;
+extern const mcu_pin_obj_t pin_PK05;
+extern const mcu_pin_obj_t pin_PK06;
+extern const mcu_pin_obj_t pin_PK07;
+
+#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H