Selaa lähdekoodia

BTT SKR Mini E3 for HAL/STM32 (#21488)

Victor Oliveira 3 vuotta sitten
vanhempi
commit
a42760d38a
No account linked to committer's email address

+ 1
- 0
.github/workflows/test-builds.yml Näytä tiedosto

@@ -72,6 +72,7 @@ jobs:
72 72
 
73 73
         # STM32 (ST) Environments
74 74
 
75
+        - STM32F103RC_btt_stm32
75 76
         - STM32F407VE_black
76 77
         - STM32F401VE_STEVAL
77 78
         - BIGTREE_BTT002

+ 6
- 0
Marlin/src/HAL/STM32/HAL.cpp Näytä tiedosto

@@ -96,6 +96,12 @@ void HAL_init() {
96 96
   #if HAS_SD_HOST_DRIVE
97 97
     MSC_SD_init();                         // Enable USB SD card access
98 98
   #endif
99
+
100
+  #if PIN_EXISTS(USB_CONNECT)
101
+    OUT_WRITE(USB_CONNECT_PIN, !USB_CONNECT_INVERTING);  // USB clear connection
102
+    delay(1000);                                         // Give OS time to notice
103
+    WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
104
+  #endif
99 105
 }
100 106
 
101 107
 // HAL idle task

+ 1
- 1
Marlin/src/HAL/STM32F1/HAL.cpp Näytä tiedosto

@@ -293,7 +293,7 @@ void HAL_init() {
293 293
   #if PIN_EXISTS(USB_CONNECT)
294 294
     OUT_WRITE(USB_CONNECT_PIN, !USB_CONNECT_INVERTING);  // USB clear connection
295 295
     delay(1000);                                         // Give OS time to notice
296
-    OUT_WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
296
+    WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
297 297
   #endif
298 298
   TERN_(POSTMORTEM_DEBUGGING, install_min_serial());    // Install the minimal serial handler
299 299
 }

+ 5
- 5
Marlin/src/pins/pins.h Näytä tiedosto

@@ -511,15 +511,15 @@
511 511
 #elif MB(MKS_ROBIN_E3P)
512 512
   #include "stm32f1/pins_MKS_ROBIN_E3P.h"       // STM32F1                                env:mks_robin_e3p
513 513
 #elif MB(BTT_SKR_MINI_V1_1)
514
-  #include "stm32f1/pins_BTT_SKR_MINI_V1_1.h"   // STM32F1                                env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
514
+  #include "stm32f1/pins_BTT_SKR_MINI_V1_1.h"   // STM32F1                                env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
515 515
 #elif MB(BTT_SKR_MINI_E3_V1_0)
516
-  #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
516
+  #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h"  // STM32F1                              env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
517 517
 #elif MB(BTT_SKR_MINI_E3_V1_2)
518
-  #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
518
+  #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h"  // STM32F1                              env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
519 519
 #elif MB(BTT_SKR_MINI_E3_V2_0)
520
-  #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
520
+  #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h"  // STM32F1                              env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
521 521
 #elif MB(BTT_SKR_MINI_MZ_V1_0)
522
-  #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
522
+  #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h"  // STM32F1                              env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
523 523
 #elif MB(BTT_SKR_E3_DIP)
524 524
   #include "stm32f1/pins_BTT_SKR_E3_DIP.h"      // STM32F1                                env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
525 525
 #elif MB(BTT_SKR_CR6)

+ 11
- 2
Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h Näytä tiedosto

@@ -21,7 +21,7 @@
21 21
  */
22 22
 #pragma once
23 23
 
24
-#if NOT_TARGET(TARGET_STM32F1)
24
+#if NOT_TARGET(__STM32F1__, STM32F1)
25 25
   #error "Oops! Select an STM32F1 board in 'Tools > Board.'"
26 26
 #endif
27 27
 
@@ -279,5 +279,14 @@
279 279
   #error "SD CUSTOM_CABLE is not compatible with SKR Mini E3."
280 280
 #endif
281 281
 
282
-#define ONBOARD_SPI_DEVICE                     1  // SPI1
282
+#define ONBOARD_SPI_DEVICE                     1  // SPI1 -> used only by HAL/STM32F1...
283 283
 #define ONBOARD_SD_CS_PIN                   PA4   // Chip select for "System" SD card
284
+
285
+#define CUSTOM_SPI_PINS                           // TODO: needed because is the only way to set SPI for SD on STM32 (for now)
286
+#if ENABLED(CUSTOM_SPI_PINS)
287
+  #define ENABLE_SPI1
288
+  #define SDSS                              ONBOARD_SD_CS_PIN
289
+  #define SD_SCK_PIN                        PA5
290
+  #define SD_MISO_PIN                       PA6
291
+  #define SD_MOSI_PIN                       PA7
292
+#endif

+ 5
- 2
buildroot/share/PlatformIO/scripts/stm32_bootloader.py Näytä tiedosto

@@ -19,9 +19,12 @@ def noencrypt(source, target, env):
19 19
 #
20 20
 if 'offset' in board.get("build").keys():
21 21
 	LD_FLASH_OFFSET = board.get("build.offset")
22
-
23 22
 	marlin.relocate_vtab(LD_FLASH_OFFSET)
24 23
 
24
+	# Flash size
25
+	maximum_flash_size = int(board.get("upload.maximum_size") / 1024)
26
+	marlin.replace_define('STM32_FLASH_SIZE', maximum_flash_size)
27
+
25 28
 	# Get upload.maximum_ram_size (defined by /buildroot/share/PlatformIO/boards/VARIOUS.json)
26 29
 	maximum_ram_size = board.get("upload.maximum_ram_size")
27 30
 
@@ -35,6 +38,6 @@ if 'offset' in board.get("build").keys():
35 38
 # Only copy the file if there's no encrypt
36 39
 #
37 40
 board_keys = board.get("build").keys()
38
-if 'firmware' in board_keys and not 'encrypt' in board_keys:
41
+if 'firmware' in board_keys and ('encrypt' not in board_keys or board.get("build.encrypt") == 'No'):
39 42
 	import marlin
40 43
 	marlin.add_post_action(noencrypt)

+ 423
- 0
buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PeripheralPins.c Näytä tiedosto

@@ -0,0 +1,423 @@
1
+/*
2
+ *******************************************************************************
3
+ * Copyright (c) 2020, STMicroelectronics
4
+ * All rights reserved.
5
+ *
6
+ * This software component is licensed by ST under BSD 3-Clause license,
7
+ * the "License"; You may not use this file except in compliance with the
8
+ * License. You may obtain a copy of the License at:
9
+ *                        opensource.org/licenses/BSD-3-Clause
10
+ *
11
+ *******************************************************************************
12
+ * Automatically generated from STM32F103R(F-G)Tx.xml
13
+ */
14
+#include "Arduino.h"
15
+#include "PeripheralPins.h"
16
+
17
+/* =====
18
+ * Note: Commented lines are alternative possibilities which are not used per default.
19
+ *       If you change them, you will have to know what you do
20
+ * =====
21
+ */
22
+
23
+//*** ADC ***
24
+
25
+#ifdef HAL_ADC_MODULE_ENABLED
26
+WEAK const PinMap PinMap_ADC[] = {
27
+  {PA_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
28
+  // {PA_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0
29
+#if defined(STM32F103xE) || defined(STM32F103xG)
30
+  // {PA_0,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0
31
+#endif
32
+  {PA_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
33
+  // {PA_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1
34
+#if defined(STM32F103xE) || defined(STM32F103xG)
35
+  // {PA_1,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1
36
+#endif
37
+  {PA_2,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
38
+  // {PA_2,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2
39
+#if defined(STM32F103xE) || defined(STM32F103xG)
40
+  // {PA_2,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2
41
+#endif
42
+  {PA_3,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
43
+  // {PA_3,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3
44
+#if defined(STM32F103xE) || defined(STM32F103xG)
45
+  // {PA_3,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3
46
+#endif
47
+  {PA_4,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
48
+  // {PA_4,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4
49
+  {PA_5,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
50
+  // {PA_5,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5
51
+  {PA_6,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
52
+  // {PA_6,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6
53
+  {PA_7,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
54
+  // {PA_7,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7
55
+  {PB_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
56
+  // {PB_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8
57
+  {PB_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
58
+  // {PB_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9
59
+  {PC_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
60
+  // {PC_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10
61
+#if defined(STM32F103xE) || defined(STM32F103xG)
62
+  // {PC_0,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10
63
+#endif
64
+  {PC_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
65
+  // {PC_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11
66
+#if defined(STM32F103xE) || defined(STM32F103xG)
67
+  // {PC_1,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11
68
+#endif
69
+  {PC_2,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
70
+  // {PC_2,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12
71
+#if defined(STM32F103xE) || defined(STM32F103xG)
72
+  // {PC_2,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12
73
+#endif
74
+  {PC_3,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
75
+  // {PC_3,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13
76
+#if defined(STM32F103xE) || defined(STM32F103xG)
77
+  // {PC_3,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13
78
+#endif
79
+  {PC_4,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
80
+  // {PC_4,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14
81
+  {PC_5,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
82
+  // {PC_5,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15
83
+  {NC,    NP,    0}
84
+};
85
+#endif
86
+
87
+//*** DAC ***
88
+
89
+#if defined(STM32F103xE) || defined(STM32F103xG)
90
+#ifdef HAL_DAC_MODULE_ENABLED
91
+WEAK const PinMap PinMap_DAC[] = {
92
+  {PA_4,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1
93
+  {PA_5,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2
94
+  {NC,    NP,    0}
95
+};
96
+#endif
97
+#endif
98
+
99
+//*** I2C ***
100
+
101
+#ifdef HAL_I2C_MODULE_ENABLED
102
+WEAK const PinMap PinMap_I2C_SDA[] = {
103
+  {PB_7,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},
104
+  {PB_9,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)},
105
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
106
+  {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},
107
+#endif
108
+  {NC,    NP,    0}
109
+};
110
+#endif
111
+
112
+#ifdef HAL_I2C_MODULE_ENABLED
113
+WEAK const PinMap PinMap_I2C_SCL[] = {
114
+  {PB_6,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},
115
+  {PB_8,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)},
116
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
117
+  {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},
118
+#endif
119
+  {NC,    NP,    0}
120
+};
121
+#endif
122
+
123
+//*** PWM ***
124
+
125
+#ifdef HAL_TIM_MODULE_ENABLED
126
+WEAK const PinMap PinMap_PWM[] = {
127
+  {PA_0,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM2_CH1
128
+  // {PA_0,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 1, 0)}, // TIM2_CH1
129
+#if defined(STM32F103xE) || defined(STM32F103xG)
130
+  // {PA_0,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM5_CH1
131
+#endif
132
+  {PA_1,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM2_CH2
133
+  // {PA_1,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 2, 0)}, // TIM2_CH2
134
+#if defined(STM32F103xE) || defined(STM32F103xG)
135
+  // {PA_1,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM5_CH2
136
+#endif
137
+  {PA_2,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM2_CH3
138
+  // {PA_2,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 3, 0)}, // TIM2_CH3
139
+#if defined(STM32F103xG)
140
+  // {PA_2,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM5_CH3
141
+#endif
142
+#if defined(STM32F103xE) || defined(STM32F103xG)
143
+  // {PA_2,  TIM9,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM9_CH1
144
+#endif
145
+  // {PA_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 4, 0)}, // TIM2_CH4
146
+#if defined(STM32F103xE) || defined(STM32F103xG)
147
+  {PA_3,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM5_CH4
148
+#else
149
+  {PA_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM2_CH4
150
+#endif
151
+#if defined(STM32F103xG)
152
+  // {PA_3,  TIM9,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM9_CH2
153
+#endif
154
+  {PA_6,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM3_CH1
155
+#if defined(STM32F103xG)
156
+  // {PA_6,  TIM13,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM13_CH1
157
+#endif
158
+  // {PA_7,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM3_CH2
159
+#if defined(STM32F103xE) || defined(STM32F103xG)
160
+  {PA_7,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 1)}, // TIM8_CH1N
161
+#else
162
+  {PA_7,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 1, 1)}, // TIM1_CH1N
163
+#endif
164
+#if defined(STM32F103xG)
165
+  // {PA_7,  TIM14,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM14_CH1
166
+#endif
167
+  {PA_8,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM1_CH1
168
+  // {PA_8,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 1, 0)}, // TIM1_CH1
169
+  {PA_9,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM1_CH2
170
+  // {PA_9,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 2, 0)}, // TIM1_CH2
171
+  {PA_10, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM1_CH3
172
+  // {PA_10, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 3, 0)}, // TIM1_CH3
173
+  {PA_11, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM1_CH4
174
+  // {PA_11, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 4, 0)}, // TIM1_CH4
175
+  {PA_15, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 1, 0)}, // TIM2_CH1
176
+  // {PA_15, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 1, 0)}, // TIM2_CH1
177
+  // {PB_0,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 2, 1)}, // TIM1_CH2N
178
+  {PB_0,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM3_CH3
179
+  // {PB_0,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 3, 0)}, // TIM3_CH3
180
+#if defined(STM32F103xE) || defined(STM32F103xG)
181
+  // {PB_0,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 1)}, // TIM8_CH2N
182
+#endif
183
+  {PB_1,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM1_PARTIAL, 3, 1)}, // TIM1_CH3N
184
+  // {PB_1,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM3_CH4
185
+  // {PB_1,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 4, 0)}, // TIM3_CH4
186
+#if defined(STM32F103xE) || defined(STM32F103xG)
187
+  // {PB_1,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 1)}, // TIM8_CH3N
188
+#endif
189
+  {PB_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_1, 2, 0)}, // TIM2_CH2
190
+  // {PB_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 2, 0)}, // TIM2_CH2
191
+  {PB_4,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 1, 0)}, // TIM3_CH1
192
+  {PB_5,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 2, 0)}, // TIM3_CH2
193
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
194
+  {PB_6,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM4_CH1
195
+  {PB_7,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM4_CH2
196
+  {PB_8,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM4_CH3
197
+  {PB_9,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM4_CH4
198
+#endif
199
+#if defined(STM32F103xG)
200
+  // {PB_8,  TIM10,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM10_CH1
201
+#endif
202
+#if defined(STM32F103xG)
203
+  // {PB_9,  TIM11,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM11_CH1
204
+#endif
205
+  {PB_10, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 3, 0)}, // TIM2_CH3
206
+  // {PB_10, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 3, 0)}, // TIM2_CH3
207
+  {PB_11, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 4, 0)}, // TIM2_CH4
208
+  // {PB_11, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 4, 0)}, // TIM2_CH4
209
+  {PB_13, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 1)}, // TIM1_CH1N
210
+  {PB_14, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 1)}, // TIM1_CH2N
211
+#if defined(STM32F103xG)
212
+  // {PB_14, TIM12,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM12_CH1
213
+#endif
214
+  {PB_15, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 1)}, // TIM1_CH3N
215
+#if defined(STM32F103xG)
216
+  // {PB_15, TIM12,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM12_CH2
217
+#endif
218
+  {PC_6,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 1, 0)}, // TIM3_CH1
219
+#if defined(STM32F103xE) || defined(STM32F103xG)
220
+  // {PC_6,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM8_CH1
221
+#endif
222
+  {PC_7,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 2, 0)}, // TIM3_CH2
223
+#if defined(STM32F103xE) || defined(STM32F103xG)
224
+  // {PC_7,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM8_CH2
225
+#endif
226
+#if defined(STM32F103xE) || defined(STM32F103xG)
227
+  {PC_8,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM8_CH3
228
+#else
229
+  {PC_8,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 3, 0)}, // TIM3_CH3
230
+#endif
231
+  {PC_9,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_ENABLE, 4, 0)}, // TIM3_CH4
232
+#if defined(STM32F103xE) || defined(STM32F103xG)
233
+  // {PC_9,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM8_CH4
234
+#endif
235
+  {NC,    NP,    0}
236
+};
237
+#endif
238
+
239
+//*** SERIAL ***
240
+
241
+#ifdef HAL_UART_MODULE_ENABLED
242
+WEAK const PinMap PinMap_UART_TX[] = {
243
+  {PA_2,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
244
+  {PA_9,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
245
+  {PB_6,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART1_ENABLE)},
246
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
247
+  {PB_10, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
248
+#endif
249
+#if defined(STM32F103xE) || defined(STM32F103xG)
250
+  {PC_10, UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
251
+#endif
252
+#if defined(STM32F103xB)
253
+  {PC_10, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)},
254
+#endif
255
+#if defined(STM32F103xE) || defined(STM32F103xG)
256
+  {PC_12, UART5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
257
+#endif
258
+  {NC,    NP,    0}
259
+};
260
+#endif
261
+
262
+#ifdef HAL_UART_MODULE_ENABLED
263
+WEAK const PinMap PinMap_UART_RX[] = {
264
+  {PA_3,  USART2,  STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)},
265
+  {PA_10, USART1,  STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)},
266
+  {PB_7,  USART1,  STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART1_ENABLE)},
267
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
268
+  {PB_11, USART3,  STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)},
269
+#endif
270
+#if defined(STM32F103xE) || defined(STM32F103xG)
271
+  {PC_11, UART4,   STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)},
272
+#endif
273
+#if defined(STM32F103xB)
274
+  {PC_11, USART3,  STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART3_PARTIAL)},
275
+#endif
276
+#if defined(STM32F103xE) || defined(STM32F103xG)
277
+  {PD_2,  UART5,   STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)},
278
+#endif
279
+  {NC,    NP,    0}
280
+};
281
+#endif
282
+
283
+#ifdef HAL_UART_MODULE_ENABLED
284
+WEAK const PinMap PinMap_UART_RTS[] = {
285
+  {PA_1,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
286
+  {PA_12, USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
287
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
288
+  {PB_14, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
289
+  {PB_14, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)},
290
+#endif
291
+  {NC,    NP,    0}
292
+};
293
+#endif
294
+
295
+#ifdef HAL_UART_MODULE_ENABLED
296
+WEAK const PinMap PinMap_UART_CTS[] = {
297
+  {PA_0,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
298
+  {PA_11, USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
299
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
300
+  {PB_13, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
301
+  {PB_13, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)},
302
+#endif
303
+  {NC,    NP,    0}
304
+};
305
+#endif
306
+
307
+//*** SPI ***
308
+
309
+#ifdef HAL_SPI_MODULE_ENABLED
310
+WEAK const PinMap PinMap_SPI_MOSI[] = {
311
+  {PA_7,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
312
+#if defined(STM32F103xE) || defined(STM32F103xG)
313
+  {PB_5,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
314
+#else
315
+  {PB_5,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)},
316
+#endif
317
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
318
+  {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
319
+#endif
320
+  {NC,    NP,    0}
321
+};
322
+#endif
323
+
324
+#ifdef HAL_SPI_MODULE_ENABLED
325
+WEAK const PinMap PinMap_SPI_MISO[] = {
326
+  {PA_6,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
327
+#if defined(STM32F103xE) || defined(STM32F103xG)
328
+  {PB_4,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
329
+#else
330
+  {PB_4,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)},
331
+#endif
332
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
333
+  {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
334
+#endif
335
+  {NC,    NP,    0}
336
+};
337
+#endif
338
+
339
+#ifdef HAL_SPI_MODULE_ENABLED
340
+WEAK const PinMap PinMap_SPI_SCLK[] = {
341
+  {PA_5,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
342
+#if defined(STM32F103xE) || defined(STM32F103xG)
343
+  {PB_3,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
344
+#else
345
+  {PB_3,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)},
346
+#endif
347
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
348
+  {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
349
+#endif
350
+  {NC,    NP,    0}
351
+};
352
+#endif
353
+
354
+#ifdef HAL_SPI_MODULE_ENABLED
355
+WEAK const PinMap PinMap_SPI_SSEL[] = {
356
+  {PA_4,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
357
+#if defined(STM32F103xE) || defined(STM32F103xG)
358
+  {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
359
+#else
360
+  {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)},
361
+#endif
362
+#if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
363
+  {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)},
364
+#endif
365
+  {NC,    NP,    0}
366
+};
367
+#endif
368
+
369
+//*** CAN ***
370
+
371
+#ifdef HAL_CAN_MODULE_ENABLED
372
+WEAK const PinMap PinMap_CAN_RD[] = {
373
+  {PA_11, CAN1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)},
374
+  {PB_8,  CAN1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_CAN1_2)},
375
+  {NC,    NP,    0}
376
+};
377
+#endif
378
+
379
+#ifdef HAL_CAN_MODULE_ENABLED
380
+WEAK const PinMap PinMap_CAN_TD[] = {
381
+  {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)},
382
+  {PB_9,  CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_CAN1_2)},
383
+  {NC,    NP,    0}
384
+};
385
+#endif
386
+
387
+//*** No ETHERNET ***
388
+
389
+//*** No QUADSPI ***
390
+
391
+//*** USB ***
392
+
393
+#ifdef HAL_PCD_MODULE_ENABLED
394
+WEAK const PinMap PinMap_USB[] = {
395
+  {PA_11, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DM
396
+  {PA_12, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DP
397
+  {NC,    NP,    0}
398
+};
399
+#endif
400
+
401
+//*** No USB_OTG_FS ***
402
+
403
+//*** No USB_OTG_HS ***
404
+
405
+//*** SD ***
406
+
407
+#if defined(STM32F103xE) || defined(STM32F103xG)
408
+#ifdef HAL_SD_MODULE_ENABLED
409
+WEAK const PinMap PinMap_SD[] = {
410
+  {PB_8,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D4
411
+  {PB_9,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D5
412
+  {PC_6,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D6
413
+  {PC_7,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D7
414
+  {PC_8,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D0
415
+  {PC_9,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D1
416
+  {PC_10, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D2
417
+  {PC_11, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // SDIO_D3
418
+  {PC_12, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)}, // SDIO_CK
419
+  {PD_2,  SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)}, // SDIO_CMD
420
+  {NC,    NP,    0}
421
+};
422
+#endif
423
+#endif

+ 30
- 0
buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PinNamesVar.h Näytä tiedosto

@@ -0,0 +1,30 @@
1
+/* SYS_WKUP */
2
+#ifdef PWR_WAKEUP_PIN1
3
+  SYS_WKUP1 = PA_0,
4
+#endif
5
+#ifdef PWR_WAKEUP_PIN2
6
+  SYS_WKUP2 = NC,
7
+#endif
8
+#ifdef PWR_WAKEUP_PIN3
9
+  SYS_WKUP3 = NC,
10
+#endif
11
+#ifdef PWR_WAKEUP_PIN4
12
+  SYS_WKUP4 = NC,
13
+#endif
14
+#ifdef PWR_WAKEUP_PIN5
15
+  SYS_WKUP5 = NC,
16
+#endif
17
+#ifdef PWR_WAKEUP_PIN6
18
+  SYS_WKUP6 = NC,
19
+#endif
20
+#ifdef PWR_WAKEUP_PIN7
21
+  SYS_WKUP7 = NC,
22
+#endif
23
+#ifdef PWR_WAKEUP_PIN8
24
+  SYS_WKUP8 = NC,
25
+#endif
26
+/* USB */
27
+#ifdef USBCON
28
+  USB_DM = PA_11,
29
+  USB_DP = PA_12,
30
+#endif

+ 200
- 0
buildroot/share/PlatformIO/variants/MARLIN_F103Rx/ldscript.ld Näytä tiedosto

@@ -0,0 +1,200 @@
1
+/*
2
+******************************************************************************
3
+**
4
+
5
+**  File        : LinkerScript.ld
6
+**
7
+**  Author		: Auto-generated by STM32CubeIDE
8
+**
9
+**  Abstract    : Linker script for STM32F103R(8/B/C/ETx Device from STM32F1 series
10
+**                      64/128/256/512Kbytes FLASH
11
+**                      20/20/48/64Kbytes RAM
12
+**
13
+**                Set heap size, stack size and stack location according
14
+**                to application requirements.
15
+**
16
+**                Set memory bank area and size if external memory is used.
17
+**
18
+**  Target      : STMicroelectronics STM32
19
+**
20
+**  Distribution: The file is distributed as is without any warranty
21
+**                of any kind.
22
+**
23
+*****************************************************************************
24
+** @attention
25
+**
26
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
27
+**
28
+** Redistribution and use in source and binary forms, with or without modification,
29
+** are permitted provided that the following conditions are met:
30
+**   1. Redistributions of source code must retain the above copyright notice,
31
+**      this list of conditions and the following disclaimer.
32
+**   2. Redistributions in binary form must reproduce the above copyright notice,
33
+**      this list of conditions and the following disclaimer in the documentation
34
+**      and/or other materials provided with the distribution.
35
+**   3. Neither the name of STMicroelectronics nor the names of its contributors
36
+**      may be used to endorse or promote products derived from this software
37
+**      without specific prior written permission.
38
+**
39
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
40
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
43
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
44
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
45
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
46
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
47
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
48
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49
+**
50
+*****************************************************************************
51
+*/
52
+
53
+/* Entry Point */
54
+ENTRY(Reset_Handler)
55
+
56
+/* Highest address of the user mode stack */
57
+_estack = 0x20000000 + LD_MAX_DATA_SIZE;	/* end of "RAM" Ram type memory */
58
+_Min_Heap_Size = 0x200;      /* required amount of heap  */
59
+_Min_Stack_Size = 0x400; /* required amount of stack */
60
+
61
+/* Memories definition */
62
+MEMORY
63
+{
64
+    RAM	(xrw)	: ORIGIN = 0x20000000,	LENGTH = LD_MAX_DATA_SIZE
65
+    FLASH	(rx)	: ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET
66
+}
67
+
68
+/* Sections */
69
+SECTIONS
70
+{
71
+  /* The startup code into "FLASH" Rom type memory */
72
+  .isr_vector :
73
+  {
74
+    . = ALIGN(4);
75
+    KEEP(*(.isr_vector)) /* Startup code */
76
+    . = ALIGN(4);
77
+  } >FLASH
78
+
79
+  /* The program code and other data into "FLASH" Rom type memory */
80
+  .text :
81
+  {
82
+    . = ALIGN(4);
83
+    *(.text)           /* .text sections (code) */
84
+    *(.text*)          /* .text* sections (code) */
85
+    *(.glue_7)         /* glue arm to thumb code */
86
+    *(.glue_7t)        /* glue thumb to arm code */
87
+    *(.eh_frame)
88
+
89
+    KEEP (*(.init))
90
+    KEEP (*(.fini))
91
+
92
+    . = ALIGN(4);
93
+    _etext = .;        /* define a global symbols at end of code */
94
+  } >FLASH
95
+
96
+  /* Constant data into "FLASH" Rom type memory */
97
+  .rodata :
98
+  {
99
+    . = ALIGN(4);
100
+    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
101
+    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
102
+    . = ALIGN(4);
103
+  } >FLASH
104
+
105
+  .ARM.extab   : { 
106
+  	. = ALIGN(4);
107
+  	*(.ARM.extab* .gnu.linkonce.armextab.*)
108
+  	. = ALIGN(4);
109
+  } >FLASH
110
+  .ARM : {
111
+    . = ALIGN(4);
112
+    __exidx_start = .;
113
+    *(.ARM.exidx*)
114
+    __exidx_end = .;
115
+    . = ALIGN(4);
116
+  } >FLASH
117
+
118
+  .preinit_array     :
119
+  {
120
+    . = ALIGN(4);
121
+    PROVIDE_HIDDEN (__preinit_array_start = .);
122
+    KEEP (*(.preinit_array*))
123
+    PROVIDE_HIDDEN (__preinit_array_end = .);
124
+    . = ALIGN(4);
125
+  } >FLASH
126
+  .init_array :
127
+  {
128
+    . = ALIGN(4);
129
+    PROVIDE_HIDDEN (__init_array_start = .);
130
+    KEEP (*(SORT(.init_array.*)))
131
+    KEEP (*(.init_array*))
132
+    PROVIDE_HIDDEN (__init_array_end = .);
133
+    . = ALIGN(4);
134
+  } >FLASH
135
+  .fini_array :
136
+  {
137
+    . = ALIGN(4);
138
+    PROVIDE_HIDDEN (__fini_array_start = .);
139
+    KEEP (*(SORT(.fini_array.*)))
140
+    KEEP (*(.fini_array*))
141
+    PROVIDE_HIDDEN (__fini_array_end = .);
142
+    . = ALIGN(4);
143
+  } >FLASH
144
+
145
+  /* Used by the startup to initialize data */
146
+  _sidata = LOADADDR(.data);
147
+
148
+  /* Initialized data sections into "RAM" Ram type memory */
149
+  .data : 
150
+  {
151
+    . = ALIGN(4);
152
+    _sdata = .;        /* create a global symbol at data start */
153
+    *(.data)           /* .data sections */
154
+    *(.data*)          /* .data* sections */
155
+
156
+    . = ALIGN(4);
157
+    _edata = .;        /* define a global symbol at data end */
158
+  } >RAM AT> FLASH
159
+
160
+  
161
+  /* Uninitialized data section into "RAM" Ram type memory */
162
+  . = ALIGN(4);
163
+  .bss :
164
+  {
165
+    /* This is used by the startup in order to initialize the .bss secion */
166
+    _sbss = .;         /* define a global symbol at bss start */
167
+    __bss_start__ = _sbss;
168
+    *(.bss)
169
+    *(.bss*)
170
+    *(COMMON)
171
+
172
+    . = ALIGN(4);
173
+    _ebss = .;         /* define a global symbol at bss end */
174
+    __bss_end__ = _ebss;
175
+  } >RAM
176
+
177
+  /* User_heap_stack section, used to check that there is enough "RAM" Ram  type memory left */
178
+  ._user_heap_stack :
179
+  {
180
+    . = ALIGN(8);
181
+    PROVIDE ( end = . );
182
+    PROVIDE ( _end = . );
183
+    . = . + _Min_Heap_Size;
184
+    . = . + _Min_Stack_Size;
185
+    . = ALIGN(8);
186
+  } >RAM
187
+
188
+  
189
+
190
+  /* Remove information from the compiler libraries */
191
+  /DISCARD/ :
192
+  {
193
+    libc.a ( * )
194
+    libm.a ( * )
195
+    libgcc.a ( * )
196
+  }
197
+
198
+  .ARM.attributes 0 : { *(.ARM.attributes) }
199
+}
200
+

+ 152
- 0
buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.cpp Näytä tiedosto

@@ -0,0 +1,152 @@
1
+/*
2
+  Copyright (c) 2011 Arduino.  All right reserved.
3
+
4
+  This library is free software; you can redistribute it and/or
5
+  modify it under the terms of the GNU Lesser General Public
6
+  License as published by the Free Software Foundation; either
7
+  version 2.1 of the License, or (at your option) any later version.
8
+
9
+  This library is distributed in the hope that it will be useful,
10
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+  See the GNU Lesser General Public License for more details.
13
+
14
+  You should have received a copy of the GNU Lesser General Public
15
+  License along with this library; if not, write to the Free Software
16
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
+*/
18
+
19
+#include "pins_arduino.h"
20
+
21
+#ifdef __cplusplus
22
+extern "C" {
23
+#endif
24
+
25
+const PinName digitalPin[] = {
26
+  PA_0,
27
+  PA_1,
28
+  PA_2,
29
+  PA_3,
30
+  PA_4,
31
+  PA_5,
32
+  PA_6,
33
+  PA_7,
34
+  PA_8,
35
+  PA_9,  // RXD
36
+  PA_10, // TXD
37
+  PA_11, // USB D-
38
+  PA_12, // USB D+
39
+  PA_13, // JTDI
40
+  PA_14, // JTCK
41
+  PA_15,
42
+  PB_0,
43
+  PB_1,
44
+  PB_2,
45
+  PB_3,  // JTDO
46
+  PB_4,  // JTRST
47
+  PB_5,
48
+  PB_6,
49
+  PB_7,
50
+  PB_8,
51
+  PB_9,
52
+  PB_10,
53
+  PB_11,  // LED
54
+  PB_12,
55
+  PB_13,
56
+  PB_14,
57
+  PB_15,
58
+  PC_0,
59
+  PC_1,
60
+  PC_2,
61
+  PC_3,
62
+  PC_4,
63
+  PC_5,
64
+  PC_6,
65
+  PC_7,
66
+  PC_8,
67
+  PC_9,
68
+  PC_10,
69
+  PC_11,
70
+  PC_12,
71
+  PC_13,
72
+  PC_14,  // OSC32_1
73
+  PC_15,  // OSC32_2
74
+  PD_0,   // OSCIN
75
+  PD_1,   // OSCOUT
76
+  PD_2
77
+};
78
+
79
+// Analog (Ax) pin number array
80
+const uint32_t analogInputPin[] = {
81
+  0,  // A0,  PA0
82
+  1,  // A1,  PA1
83
+  2,  // A2,  PA2
84
+  3,  // A3,  PA3
85
+  4,  // A4,  PA4
86
+  5,  // A5,  PA5
87
+  6,  // A6,  PA6
88
+  7,  // A7,  PA7
89
+  16, // A8,  PB0
90
+  17, // A9,  PB1
91
+  32, // A10, PC0
92
+  33, // A11, PC1
93
+  34, // A12, PC2
94
+  35, // A13, PC3
95
+  36, // A14, PC4
96
+  37  // A15, PC5
97
+};
98
+
99
+#ifdef __cplusplus
100
+}
101
+#endif
102
+
103
+// ----------------------------------------------------------------------------
104
+
105
+#ifdef __cplusplus
106
+extern "C" {
107
+#endif
108
+
109
+/**
110
+  * @brief  System Clock Configuration
111
+  * @param  None
112
+  * @retval None
113
+  */
114
+WEAK void SystemClock_Config(void)
115
+{
116
+  RCC_OscInitTypeDef RCC_OscInitStruct = {};
117
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
118
+  RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
119
+
120
+  /* Initializes the CPU, AHB and APB busses clocks */
121
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
122
+  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
123
+  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
124
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
125
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
126
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
127
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
128
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
129
+    Error_Handler();
130
+  }
131
+  /* Initializes the CPU, AHB and APB busses clocks */
132
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
133
+                                | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
134
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
135
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
136
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
137
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
138
+
139
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
140
+    Error_Handler();
141
+  }
142
+  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_USB;
143
+  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
144
+  PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
145
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
146
+    Error_Handler();
147
+  }
148
+}
149
+
150
+#ifdef __cplusplus
151
+}
152
+#endif

+ 161
- 0
buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h Näytä tiedosto

@@ -0,0 +1,161 @@
1
+/*
2
+  Copyright (c) 2011 Arduino.  All right reserved.
3
+
4
+  This library is free software; you can redistribute it and/or
5
+  modify it under the terms of the GNU Lesser General Public
6
+  License as published by the Free Software Foundation; either
7
+  version 2.1 of the License, or (at your option) any later version.
8
+
9
+  This library is distributed in the hope that it will be useful,
10
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+  See the GNU Lesser General Public License for more details.
13
+
14
+  You should have received a copy of the GNU Lesser General Public
15
+  License along with this library; if not, write to the Free Software
16
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
+*/
18
+
19
+#ifndef _VARIANT_ARDUINO_STM32_
20
+#define _VARIANT_ARDUINO_STM32_
21
+
22
+#ifdef __cplusplus
23
+extern "C" {
24
+#endif // __cplusplus
25
+
26
+
27
+// *   = F103R8-B-C-D-E-F-G
28
+// **  = F103RC-D-E-F-G
29
+//                  | DIGITAL | ANALOG         | USART                    | TWI       | SPI                   | SPECIAL   |
30
+//                  |---------|----------------|--------------------------|-----------|-----------------------|-----------|
31
+#define PA0  PIN_A0  // | 0       | A0             |                          |           |                       |           |
32
+#define PA1  PIN_A1  // | 1       | A1             |                          |           |                       |           |
33
+#define PA2  PIN_A2  // | 2       | A2             | USART2_TX                |           |                       |           |
34
+#define PA3  PIN_A3  // | 2       | A2, DAC_OUT1** | USART2_RX                |           |                       |           |
35
+#define PA4  PIN_A4  // | 4       | A4, DAC_OUT2** |                          |           | SPI1_SS               |           |
36
+#define PA5  PIN_A5  // | 5       | A5             |                          |           | SPI1_SCK              |           |
37
+#define PA6  PIN_A6  // | 6       | A6             |                          |           | SPI1_MISO             |           |
38
+#define PA7  PIN_A7  // | 7       | A7             |                          |           | SPI1_MOSI             |           |
39
+#define PA8  8   // | 8       |                |                          |           |                       |           |
40
+#define PA9  9   // | 9       |                | USART1_TX                |           |                       |           |
41
+#define PA10 10  // | 10      |                | USART1_RX                |           |                       |           |
42
+#define PA11 11  // | 11      |                |                          |           |                       | USB_DM    |
43
+#define PA12 12  // | 12      |                |                          |           |                       | USB_DP    |
44
+#define PA13 13  // | 13      |                |                          |           |                       | SWD_SWDIO |
45
+#define PA14 14  // | 14      |                |                          |           |                       | SWD_SWCLK |
46
+#define PA15 15  // | 15      |                |                          |           | SPI1_SS/SPI3_SS**     |           |
47
+//                  |---------|----------------|--------------------------|-----------|-----------------------|-----------|
48
+#define PB0  PIN_A8  // | 16      | A8             |                          |           |                       |           |
49
+#define PB1  PIN_A9  // | 17      | A9             |                          |           |                       |           |
50
+#define PB2  18  // | 18      |                |                          |           |                       | BOOT1     |
51
+#define PB3  19  // | 19      |                |                          |           | SPI1_SCK/SPI3_SCK**   |           |
52
+#define PB4  20  // | 20      |                |                          |           | SPI1_MISO/SPI3_MISO** |           |
53
+#define PB5  21  // | 21      |                |                          |           | SPI1_MOSI/SPI3_MOSI** |           |
54
+#define PB6  22  // | 22      |                | USART1_TX                | TWI1_SCL  |                       |           |
55
+#define PB7  23  // | 23      |                | USART1_RX                | TWI1_SDA  |                       |           |
56
+#define PB8  24  // | 24      |                |                          | TWI1_SCL  |                       |           |
57
+#define PB9  25  // | 25      |                |                          | TWI1_SDA  |                       |           |
58
+#define PB10 26  // | 26      |                | USART3_TX*               | TWI2_SCL* |                       |           |
59
+#define PB11 27  // | 27      |                | USART3_RX*               | TWI2_SDA* |                       |           |
60
+#define PB12 28  // | 28      |                |                          |           | SPI2_SS*              |           |
61
+#define PB13 29  // | 29      |                |                          |           | SPI2_SCK*             |           |
62
+#define PB14 30  // | 30      |                |                          |           | SPI2_MISO*            |           |
63
+#define PB15 31  // | 31      |                |                          |           | SPI2_MOSI*            |           |
64
+//                  |---------|----------------|--------------------------|-----------|-----------------------|-----------|
65
+#define PC0  PIN_A10 // | 32      | A10            |                          |           |                       |           |
66
+#define PC1  PIN_A11 // | 33      | A11            |                          |           |                       |           |
67
+#define PC2  PIN_A12 // | 34      | A12            |                          |           |                       |           |
68
+#define PC3  PIN_A13 // | 35      | A13            |                          |           |                       |           |
69
+#define PC4  PIN_A14 // | 36      | A14            |                          |           |                       |           |
70
+#define PC5  PIN_A15 // | 37      | A15            |                          |           |                       |           |
71
+#define PC6  38  // | 38      |                |                          |           |                       |           |
72
+#define PC7  39  // | 39      |                |                          |           |                       |           |
73
+#define PC8  40  // | 40      |                |                          |           |                       |           |
74
+#define PC9  41  // | 41      |                |                          |           |                       |           |
75
+#define PC10 42  // | 42      |                | USART3_TX*/UART4_TX**    |           |                       |           |
76
+#define PC11 43  // | 43      |                | USART3_RX*/UART4_RX**    |           |                       |           |
77
+#define PC12 44  // | 44      |                | UART5_TX**               |           |                       |           |
78
+#define PC13 45  // | 45      |                |                          |           |                       |           |
79
+#define PC14 46  // | 46      |                |                          |           |                       | OSC32_IN  |
80
+#define PC15 47  // | 47      |                |                          |           |                       | OSC32_OUT |
81
+//                  |---------|----------------|--------------------------|-----------|-----------------------|-----------|
82
+#define PD0  48  // | 48      |                |                          |           |                       | OSC_IN    |
83
+#define PD1  49  // | 48      |                |                          |           |                       | OSC_OUT   |
84
+#define PD2  50  // | 50      |                | UART5_RX**               |           |                       |           |
85
+//                  |---------|----------------|--------------------------|-----------|-----------------------|-----------|
86
+
87
+// This must be a literal
88
+#define NUM_DIGITAL_PINS        51
89
+// This must be a literal with a value less than or equal to to MAX_ANALOG_INPUTS
90
+#define NUM_ANALOG_INPUTS       16
91
+
92
+// On-board LED pin number
93
+#ifndef LED_BUILTIN
94
+#define LED_BUILTIN             PB11
95
+#endif
96
+#define LED_GREEN               LED_BUILTIN
97
+
98
+// On-board user button
99
+#ifndef USER_BTN
100
+#define USER_BTN                PC13
101
+#endif
102
+
103
+// Override default Arduino configuration
104
+// SPI Definitions
105
+#define PIN_SPI_SS              PA4
106
+#define PIN_SPI_MOSI            PA7
107
+#define PIN_SPI_MISO            PA6
108
+#define PIN_SPI_SCK             PA5
109
+
110
+// I2C Definitions
111
+#define PIN_WIRE_SDA            PB7
112
+#define PIN_WIRE_SCL            PB6
113
+
114
+// Timer Definitions
115
+#ifndef TIMER_TONE
116
+  #define TIMER_TONE            TIM3
117
+#endif
118
+#ifndef TIMER_SERVO
119
+  #define TIMER_SERVO           TIM2
120
+#endif
121
+// UART Definitions
122
+// Define here Serial instance number to map on Serial generic name
123
+#define SERIAL_UART_INSTANCE    1
124
+
125
+// Default pin used for 'Serial1' instance
126
+#define PIN_SERIAL_RX           PA10
127
+#define PIN_SERIAL_TX           PA9
128
+
129
+/* Extra HAL modules */
130
+#if defined(STM32F103xE) || defined(STM32F103xG)
131
+#define HAL_DAC_MODULE_ENABLED
132
+#endif
133
+
134
+#ifdef __cplusplus
135
+} // extern "C"
136
+#endif
137
+/*----------------------------------------------------------------------------
138
+ *        Arduino objects - C++ only
139
+ *----------------------------------------------------------------------------*/
140
+
141
+#ifdef __cplusplus
142
+  // These serial port names are intended to allow libraries and architecture-neutral
143
+  // sketches to automatically default to the correct port name for a particular type
144
+  // of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
145
+  // the first hardware serial port whose RX/TX pins are not dedicated to another use.
146
+  //
147
+  // SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
148
+  //
149
+  // SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
150
+  //
151
+  // SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
152
+  //
153
+  // SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
154
+  //
155
+  // SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
156
+  //                            pins are NOT connected to anything by default.
157
+  #define SERIAL_PORT_MONITOR     Serial
158
+  #define SERIAL_PORT_HARDWARE    Serial1
159
+#endif
160
+
161
+#endif /* _VARIANT_ARDUINO_STM32_ */

+ 17
- 0
buildroot/tests/STM32F103RC_btt_USB_stm32 Näytä tiedosto

@@ -0,0 +1,17 @@
1
+#!/usr/bin/env bash
2
+#
3
+# Build tests for STM32F103RC BigTreeTech (SKR Mini v1.1)
4
+#
5
+
6
+# exit on first failure
7
+set -e
8
+
9
+#
10
+# Build with the default configurations
11
+#
12
+restore_configs
13
+opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1
14
+exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3"
15
+
16
+# clean up
17
+restore_configs

+ 20
- 0
buildroot/tests/STM32F103RC_btt_stm32 Näytä tiedosto

@@ -0,0 +1,20 @@
1
+#!/usr/bin/env bash
2
+#
3
+# Build tests for STM32F103RC BigTreeTech (SKR Mini E3)
4
+#
5
+
6
+# exit on first failure
7
+set -e
8
+
9
+#
10
+# Build with the default configurations
11
+#
12
+restore_configs
13
+opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0 SERIAL_PORT 1 SERIAL_PORT_2 -1 \
14
+        X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209 Z_DRIVER_TYPE TMC2209 E0_DRIVER_TYPE TMC2209
15
+opt_enable PINS_DEBUGGING Z_IDLE_HEIGHT
16
+
17
+exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - Basic Config with TMC2209 HW Serial" "$3"
18
+
19
+# clean up
20
+restore_configs

+ 50
- 0
ini/stm32f1.ini Näytä tiedosto

@@ -144,6 +144,56 @@ lib_deps          = ${env:STM32F103RC_btt_512K.lib_deps}
144 144
   USBComposite for STM32F1@0.91
145 145
 
146 146
 #
147
+# STM32 HAL version of STM32F103RC_btt envs
148
+#
149
+
150
+[env:STM32F103RC_stm32]
151
+platform             = ${common_stm32.platform}
152
+extends              = common_stm32
153
+board                = genericSTM32F103RC
154
+monitor_speed        = 115200
155
+board_build.core     = stm32
156
+board_build.variant  = MARLIN_F103Rx
157
+board_build.ldscript = ldscript.ld
158
+extra_scripts        = ${common.extra_scripts}
159
+  pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
160
+  buildroot/share/PlatformIO/scripts/stm32_bootloader.py
161
+
162
+[env:STM32F103RC_btt_stm32]
163
+platform             = ${common_stm32.platform}
164
+extends              = env:STM32F103RC_stm32
165
+build_flags          = ${common_stm32.build_flags} -DDEBUG_LEVEL=0 -DTIMER_SERVO=TIM5
166
+board_build.offset   = 0x7000
167
+board_build.encrypt  = No
168
+board_build.firmware = firmware.bin
169
+board_upload.offset_address = 0x08007000
170
+
171
+[env:STM32F103RC_btt_USB_stm32]
172
+extends           = env:STM32F103RC_btt_stm32
173
+platform          = ${common_stm32.platform}
174
+platform_packages = framework-arduinoststm32@https://github.com/rhapsodyv/Arduino_Core_STM32/archive/usb-host-msc-cdc-msc.zip
175
+build_unflags     = ${common_stm32.build_unflags} -DUSBD_USE_CDC
176
+build_flags       = ${env:STM32F103RC_btt_stm32.build_flags} ${env:stm32_flash_drive.build_flags}
177
+  -DUSBCON
178
+  -DUSE_USBHOST_HS
179
+  -DUSBD_IRQ_PRIO=5
180
+  -DUSBD_IRQ_SUBPRIO=6
181
+  -DUSE_USB_HS_IN_FS
182
+  -DUSBD_USE_CDC_MSC
183
+
184
+[env:STM32F103RC_btt_512K_stm32]
185
+platform          = ${common_stm32.platform}
186
+extends           = env:STM32F103RC_btt_stm32
187
+board_upload.maximum_size = 524288
188
+build_flags       = ${env:STM32F103RC_btt_stm32.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
189
+
190
+[env:STM32F103RC_btt_512K_USB_stm32]
191
+platform          = ${common_stm32.platform}
192
+extends           = env:STM32F103RC_btt_USB_stm32
193
+board_upload.maximum_size = 524288
194
+build_flags       = ${env:STM32F103RC_btt_USB_stm32.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
195
+
196
+#
147 197
 # STM32F103RE
148 198
 #
149 199
 [env:STM32F103RE]

Loading…
Peruuta
Tallenna