✨ BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6) (#23283)
This commit is contained in:
		
				
					committed by
					
						 Scott Lahteine
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							efd67cf80d
						
					
				
				
					commit
					a6bed22839
				
			| @@ -130,7 +130,11 @@ | ||||
| // Types | ||||
| // ------------------------ | ||||
|  | ||||
| typedef int16_t pin_t; | ||||
| #ifdef STM32G0B1xx | ||||
|   typedef int32_t pin_t; | ||||
| #else | ||||
|   typedef int16_t pin_t; | ||||
| #endif | ||||
|  | ||||
| #define HAL_SERVO_LIB libServo | ||||
| #define PAUSE_SERVO_OUTPUT() libServo::pause_all_servos() | ||||
|   | ||||
| @@ -135,7 +135,7 @@ void install_min_serial() { | ||||
|   HAL_min_serial_out = &TX; | ||||
| } | ||||
|  | ||||
| #if DISABLED(DYNAMIC_VECTORTABLE) && DISABLED(STM32F0xx) // Cortex M0 can't jump to a symbol that's too far from the current function, so we work around this in exception_arm.cpp | ||||
| #if NONE(DYNAMIC_VECTORTABLE, STM32F0xx, STM32G0xx) // Cortex M0 can't jump to a symbol that's too far from the current function, so we work around this in exception_arm.cpp | ||||
| extern "C" { | ||||
|   __attribute__((naked)) void JumpHandler_ASM() { | ||||
|     __asm__ __volatile__ ( | ||||
|   | ||||
| @@ -67,7 +67,7 @@ | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifdef STM32F0xx | ||||
| #if defined(STM32F0xx) || defined(STM32G0xx) | ||||
|   #define MCU_STEP_TIMER 16 | ||||
|   #define MCU_TEMP_TIMER 17 | ||||
| #elif defined(STM32F1xx) | ||||
|   | ||||
| @@ -41,7 +41,7 @@ | ||||
|   #define START_FLASH_ADDR  0x00000000 | ||||
|   #define END_FLASH_ADDR    0x00080000 | ||||
|  | ||||
| #elif defined(__STM32F1__) || defined(STM32F1xx) || defined(STM32F0xx) | ||||
| #elif defined(__STM32F1__) || defined(STM32F1xx) || defined(STM32F0xx) || defined(STM32G0xx) | ||||
|  | ||||
|   // For STM32F103ZET6/STM32F103VET6/STM32F0xx | ||||
|   //  SRAM  (0x20000000 - 0x20010000) (64kb) | ||||
|   | ||||
| @@ -101,7 +101,7 @@ struct __attribute__((packed)) ContextSavedFrame { | ||||
|   uint32_t ELR; | ||||
| }; | ||||
|  | ||||
| #if DISABLED(STM32F0xx) | ||||
| #if NONE(STM32F0xx, STM32G0xx) | ||||
|   extern "C" | ||||
|   __attribute__((naked)) void CommonHandler_ASM() { | ||||
|     __asm__ __volatile__ ( | ||||
|   | ||||
| @@ -324,39 +324,40 @@ | ||||
| #define BOARD_BTT_SKR_MINI_E3_V1_0    4024  // BigTreeTech SKR Mini E3 (STM32F103RC) | ||||
| #define BOARD_BTT_SKR_MINI_E3_V1_2    4025  // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC) | ||||
| #define BOARD_BTT_SKR_MINI_E3_V2_0    4026  // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE) | ||||
| #define BOARD_BTT_SKR_MINI_MZ_V1_0    4027  // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC) | ||||
| #define BOARD_BTT_SKR_E3_DIP          4028  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE) | ||||
| #define BOARD_BTT_SKR_CR6             4029  // BigTreeTech SKR CR6 v1.0 (STM32F103RE) | ||||
| #define BOARD_JGAURORA_A5S_A1         4030  // JGAurora A5S A1 (STM32F103ZET6) | ||||
| #define BOARD_FYSETC_AIO_II           4031  // FYSETC AIO_II | ||||
| #define BOARD_FYSETC_CHEETAH          4032  // FYSETC Cheetah | ||||
| #define BOARD_FYSETC_CHEETAH_V12      4033  // FYSETC Cheetah V1.2 | ||||
| #define BOARD_LONGER3D_LK             4034  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6 | ||||
| #define BOARD_CCROBOT_MEEB_3DP        4035  // ccrobot-online.com MEEB_3DP (STM32F103RC) | ||||
| #define BOARD_CHITU3D_V5              4036  // Chitu3D TronXY X5SA V5 Board | ||||
| #define BOARD_CHITU3D_V6              4037  // Chitu3D TronXY X5SA V6 Board | ||||
| #define BOARD_CHITU3D_V9              4038  // Chitu3D TronXY X5SA V9 Board | ||||
| #define BOARD_CREALITY_V4             4039  // Creality v4.x (STM32F103RE) | ||||
| #define BOARD_CREALITY_V427           4040  // Creality v4.2.7 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V4210          4041  // Creality v4.2.10 (STM32F103RE) as found in the CR-30 | ||||
| #define BOARD_CREALITY_V431           4042  // Creality v4.3.1 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_A         4043  // Creality v4.3.1a (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_B         4044  // Creality v4.3.1b (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_C         4045  // Creality v4.3.1c (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_D         4046  // Creality v4.3.1d (STM32F103RE) | ||||
| #define BOARD_CREALITY_V452           4047  // Creality v4.5.2 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V453           4048  // Creality v4.5.3 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V24S1          4049  // Creality v2.4.S1 (STM32F103RE) v101 as found in the Ender 7 | ||||
| #define BOARD_TRIGORILLA_PRO          4050  // Trigorilla Pro (STM32F103ZET6) | ||||
| #define BOARD_FLY_MINI                4051  // FLYmaker FLY MINI (STM32F103RCT6) | ||||
| #define BOARD_FLSUN_HISPEED           4052  // FLSUN HiSpeedV1 (STM32F103VET6) | ||||
| #define BOARD_BEAST                   4053  // STM32F103RET6 Libmaple-based controller | ||||
| #define BOARD_MINGDA_MPX_ARM_MINI     4054  // STM32F103ZET6 Mingda MD-16 | ||||
| #define BOARD_GTM32_PRO_VD            4055  // STM32F103VET6 controller | ||||
| #define BOARD_ZONESTAR_ZM3E2          4056  // Zonestar ZM3E2    (STM32F103RCT6) | ||||
| #define BOARD_ZONESTAR_ZM3E4          4057  // Zonestar ZM3E4 V1 (STM32F103VCT6) | ||||
| #define BOARD_ZONESTAR_ZM3E4V2        4058  // Zonestar ZM3E4 V2 (STM32F103VCT6) | ||||
| #define BOARD_ERYONE_ERY32_MINI       4059  // Eryone Ery32 mini (STM32F103VET6) | ||||
| #define BOARD_BTT_SKR_MINI_E3_V3_0    4027  // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE) | ||||
| #define BOARD_BTT_SKR_MINI_MZ_V1_0    4028  // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC) | ||||
| #define BOARD_BTT_SKR_E3_DIP          4029  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE) | ||||
| #define BOARD_BTT_SKR_CR6             4030  // BigTreeTech SKR CR6 v1.0 (STM32F103RE) | ||||
| #define BOARD_JGAURORA_A5S_A1         4031  // JGAurora A5S A1 (STM32F103ZET6) | ||||
| #define BOARD_FYSETC_AIO_II           4032  // FYSETC AIO_II | ||||
| #define BOARD_FYSETC_CHEETAH          4033  // FYSETC Cheetah | ||||
| #define BOARD_FYSETC_CHEETAH_V12      4034  // FYSETC Cheetah V1.2 | ||||
| #define BOARD_LONGER3D_LK             4035  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6 | ||||
| #define BOARD_CCROBOT_MEEB_3DP        4036  // ccrobot-online.com MEEB_3DP (STM32F103RC) | ||||
| #define BOARD_CHITU3D_V5              4037  // Chitu3D TronXY X5SA V5 Board | ||||
| #define BOARD_CHITU3D_V6              4038  // Chitu3D TronXY X5SA V6 Board | ||||
| #define BOARD_CHITU3D_V9              4039  // Chitu3D TronXY X5SA V9 Board | ||||
| #define BOARD_CREALITY_V4             4040  // Creality v4.x (STM32F103RE) | ||||
| #define BOARD_CREALITY_V427           4041  // Creality v4.2.7 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V4210          4042  // Creality v4.2.10 (STM32F103RE) as found in the CR-30 | ||||
| #define BOARD_CREALITY_V431           4043  // Creality v4.3.1 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_A         4044  // Creality v4.3.1a (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_B         4045  // Creality v4.3.1b (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_C         4046  // Creality v4.3.1c (STM32F103RE) | ||||
| #define BOARD_CREALITY_V431_D         4047  // Creality v4.3.1d (STM32F103RE) | ||||
| #define BOARD_CREALITY_V452           4048  // Creality v4.5.2 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V453           4049  // Creality v4.5.3 (STM32F103RE) | ||||
| #define BOARD_CREALITY_V24S1          4050  // Creality v2.4.S1 (STM32F103RE) v101 as found in the Ender 7 | ||||
| #define BOARD_TRIGORILLA_PRO          4051  // Trigorilla Pro (STM32F103ZET6) | ||||
| #define BOARD_FLY_MINI                4052  // FLYmaker FLY MINI (STM32F103RCT6) | ||||
| #define BOARD_FLSUN_HISPEED           4053  // FLSUN HiSpeedV1 (STM32F103VET6) | ||||
| #define BOARD_BEAST                   4054  // STM32F103RET6 Libmaple-based controller | ||||
| #define BOARD_MINGDA_MPX_ARM_MINI     4055  // STM32F103ZET6 Mingda MD-16 | ||||
| #define BOARD_GTM32_PRO_VD            4056  // STM32F103VET6 controller | ||||
| #define BOARD_ZONESTAR_ZM3E2          4057  // Zonestar ZM3E2    (STM32F103RCT6) | ||||
| #define BOARD_ZONESTAR_ZM3E4          4058  // Zonestar ZM3E4 V1 (STM32F103VCT6) | ||||
| #define BOARD_ZONESTAR_ZM3E4V2        4059  // Zonestar ZM3E4 V2 (STM32F103VCT6) | ||||
| #define BOARD_ERYONE_ERY32_MINI       4060  // Eryone Ery32 mini (STM32F103VET6) | ||||
|  | ||||
| // | ||||
| // ARM Cortex-M4F | ||||
|   | ||||
| @@ -1380,7 +1380,7 @@ void Stepper::set_directions() { | ||||
|     } | ||||
|  | ||||
|     FORCE_INLINE int32_t Stepper::_eval_bezier_curve(const uint32_t curr_step) { | ||||
|       #if defined(__arm__) || defined(__thumb__) | ||||
|       #if (defined(__arm__) || defined(__thumb__)) && !defined(STM32G0B1xx) // TODO: Test define STM32G0xx versus STM32G0B1xx | ||||
|  | ||||
|         // For ARM Cortex M3/M4 CPUs, we have the optimized assembler version, that takes 43 cycles to execute | ||||
|         uint32_t flo = 0; | ||||
|   | ||||
| @@ -527,6 +527,8 @@ | ||||
|   #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple | ||||
| #elif MB(BTT_SKR_MINI_E3_V2_0) | ||||
|   #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple | ||||
| #elif MB(BTT_SKR_MINI_E3_V3_0) | ||||
|   #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h"  // STM32G0                              env:STM32G0B1RE_btt | ||||
| #elif MB(BTT_SKR_MINI_MZ_V1_0) | ||||
|   #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple | ||||
| #elif MB(BTT_SKR_E3_DIP) | ||||
|   | ||||
| @@ -206,7 +206,7 @@ | ||||
|       /** | ||||
|        * TFTGLCD_PANEL_SPI display pinout | ||||
|        * | ||||
|        *               Board                                      Display | ||||
|        *               Board                                        Display | ||||
|        *               ------                                       ------ | ||||
|        *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK) | ||||
|        * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)     LCD_CS | 3  4 | SD_CS (PA10) | ||||
| @@ -249,7 +249,7 @@ | ||||
|   /** | ||||
|    * FYSETC TFT TFT81050 display pinout | ||||
|    * | ||||
|    *               Board                                      Display | ||||
|    *               Board                                        Display | ||||
|    *               ------                                       ------ | ||||
|    *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK) | ||||
|    * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)  MOD_RESET | 3  4 | SD_CS (PA10) | ||||
|   | ||||
							
								
								
									
										332
									
								
								Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										332
									
								
								Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,332 @@ | ||||
| /** | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] | ||||
|  * | ||||
|  * Based on Sprinter and grbl. | ||||
|  * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| //#define BOARD_CUSTOM_BUILD_FLAGS -DTONE_CHANNEL=4 -DTONE_TIMER=4 -DTIMER_TONE=4 | ||||
|  | ||||
| #ifndef BOARD_INFO_NAME | ||||
|   #define BOARD_INFO_NAME "BTT SKR Mini E3 V3.0" | ||||
| #endif | ||||
|  | ||||
| #define USES_DIAG_JUMPERS | ||||
|  | ||||
| // Ignore temp readings during development. | ||||
| //#define BOGUS_TEMPERATURE_GRACE_PERIOD    2000 | ||||
|  | ||||
| #define LED_PIN                             PD8 | ||||
|  | ||||
| // Onboard I2C EEPROM | ||||
| #if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) | ||||
|   #undef NO_EEPROM_SELECTED | ||||
|   #define I2C_EEPROM | ||||
|   #define SOFT_I2C_EEPROM                         // Force the use of Software I2C | ||||
|   #define I2C_SCL_PIN                       PB6 | ||||
|   #define I2C_SDA_PIN                       PB7 | ||||
|   #define MARLIN_EEPROM_SIZE              0x1000  // 4KB | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Servos | ||||
| // | ||||
| #define SERVO0_PIN                          PA1   // SERVOS | ||||
|  | ||||
| // | ||||
| // Limit Switches | ||||
| // | ||||
| #define X_STOP_PIN                          PC0   // X-STOP | ||||
| #define Y_STOP_PIN                          PC1   // Y-STOP | ||||
| #define Z_STOP_PIN                          PC2   // Z-STOP | ||||
|  | ||||
| // | ||||
| // Z Probe must be this pin | ||||
| // | ||||
| #define Z_MIN_PROBE_PIN                     PC14  // PROBE | ||||
|  | ||||
| // | ||||
| // Filament Runout Sensor | ||||
| // | ||||
| #ifndef FIL_RUNOUT_PIN | ||||
|   #define FIL_RUNOUT_PIN                    PC15  // E0-STOP | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Power-loss Detection | ||||
| // | ||||
| #ifndef POWER_LOSS_PIN | ||||
|   #define POWER_LOSS_PIN                    PC12  // Power Loss Detection: PWR-DET | ||||
| #endif | ||||
|  | ||||
| #ifndef NEOPIXEL_PIN | ||||
|   #define NEOPIXEL_PIN                      PA8   // LED driving pin | ||||
| #endif | ||||
|  | ||||
| #ifndef PS_ON_PIN | ||||
|   #define PS_ON_PIN                         PC13  // Power Supply Control | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Steppers | ||||
| // | ||||
| #define X_ENABLE_PIN                        PB14 | ||||
| #define X_STEP_PIN                          PB13 | ||||
| #define X_DIR_PIN                           PB12 | ||||
|  | ||||
| #define Y_ENABLE_PIN                        PB11 | ||||
| #define Y_STEP_PIN                          PB10 | ||||
| #define Y_DIR_PIN                           PB2 | ||||
|  | ||||
| #define Z_ENABLE_PIN                        PB1 | ||||
| #define Z_STEP_PIN                          PB0 | ||||
| #define Z_DIR_PIN                           PC5 | ||||
|  | ||||
| #define E0_ENABLE_PIN                       PD1 | ||||
| #define E0_STEP_PIN                         PB3 | ||||
| #define E0_DIR_PIN                          PB4 | ||||
|  | ||||
| #if HAS_TMC_UART | ||||
|   /** | ||||
|    * TMC220x stepper drivers | ||||
|    * Hardware serial communication ports | ||||
|    */ | ||||
|   #define X_HARDWARE_SERIAL  MSerial4 | ||||
|   #define Y_HARDWARE_SERIAL  MSerial4 | ||||
|   #define Z_HARDWARE_SERIAL  MSerial4 | ||||
|   #define E0_HARDWARE_SERIAL MSerial4 | ||||
|  | ||||
|   // Default TMC slave addresses | ||||
|   #ifndef X_SLAVE_ADDRESS | ||||
|     #define X_SLAVE_ADDRESS  0 | ||||
|   #endif | ||||
|   #ifndef Y_SLAVE_ADDRESS | ||||
|     #define Y_SLAVE_ADDRESS  2 | ||||
|   #endif | ||||
|   #ifndef Z_SLAVE_ADDRESS | ||||
|     #define Z_SLAVE_ADDRESS  1 | ||||
|   #endif | ||||
|   #ifndef E0_SLAVE_ADDRESS | ||||
|     #define E0_SLAVE_ADDRESS 3 | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Temperature Sensors | ||||
| // | ||||
| #define TEMP_0_PIN                          PA0   // Analog Input "TH0" | ||||
| #define TEMP_BED_PIN                        PC4   // Analog Input "TB0" | ||||
|  | ||||
| // | ||||
| // Heaters / Fans | ||||
| // | ||||
| #define HEATER_0_PIN                        PC8   // "HE" | ||||
| #define HEATER_BED_PIN                      PC9   // "HB" | ||||
| #define FAN_PIN                             PC6   // "FAN0" | ||||
| #define FAN1_PIN                            PC7   // "FAN1" | ||||
| #define FAN2_PIN                            PB15  // "FAN2" | ||||
|  | ||||
| /** | ||||
|  *              SKR Mini E3 V3.0 | ||||
|  *                 ------ | ||||
|  *             5V | 1  2 | GND | ||||
|  *  (LCD_EN) PD6  | 3  4 | PB8  (LCD_RS) | ||||
|  *  (LCD_D4) PB9  | 5  6   PA10 (BTN_EN2) | ||||
|  *          RESET | 7  8 | PA9  (BTN_EN1) | ||||
|  * (BTN_ENC) PA15 | 9 10 | PB5  (BEEPER) | ||||
|  *                 ------  | ||||
|  *                  EXP1 | ||||
|  */ | ||||
| #define EXP1_09_PIN                         PA15 | ||||
| #define EXP1_03_PIN                         PD6 | ||||
|  | ||||
| #if EITHER(DWIN_CREALITY_LCD, IS_DWIN_MARLINUI) | ||||
|   /** | ||||
|    *        ------              ------              ------ | ||||
|    *   VCC | 1  2 | GND    VCC | 1  2 | GND    GND |  2 1 | VCC | ||||
|    *     A | 3  4 | B        A | 3  4 | B        B |  4 3 | A | ||||
|    *       | 5  6   TX    BEEP | 5  6   ENT    ENT |  6 5 | BEEP | ||||
|    *       | 7  8 | RX      TX | 7  8 | RX      RX |  8 7 | TX | ||||
|    *  BEEP | 9 10 | ENT        | 9 10 |            | 10 9 | | ||||
|    *        ------              ------              ------ | ||||
|    *         EXP1                DWIN             DWIN (plug) | ||||
|    * | ||||
|    * All pins are labeled as printed on DWIN PCB. Connect TX-TX, A-A and so on. | ||||
|    */ | ||||
|  | ||||
|   #error "DWIN_CREALITY_LCD requires a custom cable, see diagram above this line. Comment out this line to continue." | ||||
|  | ||||
|   #define BEEPER_PIN                 EXP1_09_PIN | ||||
|   #define BTN_EN1                    EXP1_03_PIN | ||||
|   #define BTN_EN2                           PB8 | ||||
|   #define BTN_ENC                           PB5 | ||||
|  | ||||
| #elif HAS_WIRED_LCD | ||||
|  | ||||
|   #if ENABLED(CR10_STOCKDISPLAY) | ||||
|  | ||||
|     #define BEEPER_PIN                      PB5 | ||||
|     #define BTN_ENC                  EXP1_09_PIN | ||||
|  | ||||
|     #define BTN_EN1                         PA9 | ||||
|     #define BTN_EN2                         PA10 | ||||
|  | ||||
|     #define LCD_PINS_RS                     PB8 | ||||
|     #define LCD_PINS_ENABLE          EXP1_03_PIN | ||||
|     #define LCD_PINS_D4                     PB9 | ||||
|  | ||||
|   #elif ENABLED(ZONESTAR_LCD)                     // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! | ||||
|  | ||||
|     #error "CAUTION! ZONESTAR_LCD requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue." | ||||
|  | ||||
|     #define LCD_PINS_RS                     PB9 | ||||
|     #define LCD_PINS_ENABLE          EXP1_09_PIN | ||||
|     #define LCD_PINS_D4                     PB8 | ||||
|     #define LCD_PINS_D5                     PA10 | ||||
|     #define LCD_PINS_D6                     PA9 | ||||
|     #define LCD_PINS_D7                     PB5 | ||||
|     #define ADC_KEYPAD_PIN                  PA1   // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! | ||||
|  | ||||
|   #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) | ||||
|  | ||||
|     #define BTN_ENC                  EXP1_09_PIN | ||||
|     #define BTN_EN1                         PA9 | ||||
|     #define BTN_EN2                         PA10 | ||||
|  | ||||
|     #define DOGLCD_CS                       PB8 | ||||
|     #define DOGLCD_A0                       PB9 | ||||
|     #define DOGLCD_SCK                      PB5 | ||||
|     #define DOGLCD_MOSI              EXP1_03_PIN | ||||
|  | ||||
|     #define FORCE_SOFT_SPI | ||||
|     #define LCD_BACKLIGHT_PIN               -1 | ||||
|  | ||||
|   #elif IS_TFTGLCD_PANEL | ||||
|  | ||||
|     #if ENABLED(TFTGLCD_PANEL_SPI) | ||||
|  | ||||
|       #error "CAUTION! TFTGLCD_PANEL_SPI requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue." | ||||
|  | ||||
|       /** | ||||
|        * TFTGLCD_PANEL_SPI display pinout | ||||
|        * | ||||
|        *               Board                                        Display | ||||
|        *               ------                                       ------ | ||||
|        *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK) | ||||
|        * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)     LCD_CS | 3  4 | SD_CS (PA10) | ||||
|        * (FREE)   PB9 | 5  6 | PA10 (SD_CS)                 (FREE) | 5  6 | MOSI  (SPI1-MOSI) | ||||
|        *        RESET | 7  8 | PA9  (MOD_RESET)   (PB5)     SD_DET | 7  8 | (FREE) | ||||
|        * (BEEPER) PB6 | 9 10 | PB5  (SD_DET)                   GND | 9 10 | 5V | ||||
|        *               ------                                       ------ | ||||
|        *                EXP1                                         EXP1 | ||||
|        * | ||||
|        * Needs custom cable: | ||||
|        * | ||||
|        *    Board             Display | ||||
|        * | ||||
|        *   EXP1-1 ----------- EXP1-10 | ||||
|        *   EXP1-2 ----------- EXP1-9 | ||||
|        *   SPI1-4 ----------- EXP1-6 | ||||
|        *   EXP1-4 ----------- FREE | ||||
|        *   SPI1-3 ----------- EXP1-2 | ||||
|        *   EXP1-6 ----------- EXP1-4 | ||||
|        *   EXP1-7 ----------- FREE | ||||
|        *   EXP1-8 ----------- EXP1-3 | ||||
|        *   SPI1-1 ----------- EXP1-1 | ||||
|        *  EXP1-10 ----------- EXP1-7 | ||||
|        */ | ||||
|  | ||||
|       #define TFTGLCD_CS                    PA9 | ||||
|  | ||||
|     #endif | ||||
|  | ||||
|   #else | ||||
|     #error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3." | ||||
|   #endif | ||||
|  | ||||
| #endif // HAS_WIRED_LCD | ||||
|  | ||||
| #if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) | ||||
|  | ||||
|   #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue." | ||||
|  | ||||
|   /** | ||||
|    * FYSETC TFT TFT81050 display pinout | ||||
|    * | ||||
|    *               Board                                        Display | ||||
|    *               ------                                       ------ | ||||
|    *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK) | ||||
|    * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)  MOD_RESET | 3  4 | SD_CS (PA10) | ||||
|    * (FREE)   PB9 | 5  6 | PA10 (SD_CS)       (PB8)     LCD_CS | 5  6 | MOSI  (SPI1-MOSI) | ||||
|    *        RESET | 7  8 | PA9  (MOD_RESET)   (PB5)     SD_DET | 7  8 | RESET | ||||
|    * (BEEPER) PB6 | 9 10 | PB5  (SD_DET)                   GND | 9 10 | 5V | ||||
|    *               ------                                       ------ | ||||
|    *                EXP1                                         EXP1 | ||||
|    * | ||||
|    * Needs custom cable: | ||||
|    * | ||||
|    *    Board   Adapter   Display | ||||
|    *           _________ | ||||
|    *   EXP1-1 ----------- EXP1-10 | ||||
|    *   EXP1-2 ----------- EXP1-9 | ||||
|    *   SPI1-4 ----------- EXP1-6 | ||||
|    *   EXP1-4 ----------- EXP1-5 | ||||
|    *   SPI1-3 ----------- EXP1-2 | ||||
|    *   EXP1-6 ----------- EXP1-4 | ||||
|    *   EXP1-7 ----------- EXP1-8 | ||||
|    *   EXP1-8 ----------- EXP1-3 | ||||
|    *   SPI1-1 ----------- EXP1-1 | ||||
|    *  EXP1-10 ----------- EXP1-7 | ||||
|    */ | ||||
|  | ||||
|   #define CLCD_SPI_BUS                         1  // SPI1 connector | ||||
|  | ||||
|   #define BEEPER_PIN                 EXP1_09_PIN | ||||
|  | ||||
|   #define CLCD_MOD_RESET                    PA9 | ||||
|   #define CLCD_SPI_CS                       PB8 | ||||
|  | ||||
| #endif // TOUCH_UI_FTDI_EVE && LCD_FYSETC_TFT81050 | ||||
|  | ||||
| // | ||||
| // SD Support | ||||
| // | ||||
|  | ||||
| #ifndef SDCARD_CONNECTION | ||||
|   #define SDCARD_CONNECTION              ONBOARD | ||||
| #endif | ||||
|  | ||||
| #if SD_CONNECTION_IS(ONBOARD) | ||||
|   #define SD_DETECT_PIN                     PC3 | ||||
| #elif SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) | ||||
|   #define SD_DETECT_PIN                     PB5 | ||||
|   #define SD_SS_PIN                         PA10 | ||||
| #elif SD_CONNECTION_IS(CUSTOM_CABLE) | ||||
|   #error "SD CUSTOM_CABLE is not compatible with SKR Mini E3." | ||||
| #endif | ||||
|  | ||||
| #define ONBOARD_SPI_DEVICE                     1  // SPI1 -> used only by HAL/STM32F1... | ||||
| #define ONBOARD_SD_CS_PIN                   PA4   // Chip select for "System" SD card | ||||
|  | ||||
| #define ENABLE_SPI1 | ||||
| #define SDSS                   ONBOARD_SD_CS_PIN | ||||
| #define SD_SS_PIN              ONBOARD_SD_CS_PIN | ||||
| #define SD_SCK_PIN                          PA5 | ||||
| #define SD_MISO_PIN                         PA6 | ||||
| #define SD_MOSI_PIN                         PA7 | ||||
							
								
								
									
										47
									
								
								buildroot/share/PlatformIO/boards/marlin_STM32G0B1RE.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								buildroot/share/PlatformIO/boards/marlin_STM32G0B1RE.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| { | ||||
|   "build": { | ||||
|     "core": "stm32", | ||||
|     "cpu": "cortex-m0plus", | ||||
|     "extra_flags": "-DSTM32G0xx -DSTM32G0B1xx", | ||||
|     "f_cpu": "64000000L", | ||||
|     "framework_extra_flags": { | ||||
|       "arduino": "-D__CORTEX_SC=0" | ||||
|     }, | ||||
|     "mcu": "stm32g0b1ret6", | ||||
|     "product_line": "STM32G0B1xx", | ||||
|     "variant": "STM32G0xx/MARLIN_G0B1RE" | ||||
|   }, | ||||
|   "debug": { | ||||
|     "default_tools": [ | ||||
|       "stlink" | ||||
|     ], | ||||
|     "jlink_device": "STM32G0B1RE", | ||||
|     "onboard_tools": [ | ||||
|       "stlink" | ||||
|     ], | ||||
|     "openocd_target": "stm32g0x", | ||||
|     "svd_path": "STM32G0B1.svd" | ||||
|   }, | ||||
|   "frameworks": [ | ||||
|     "arduino", | ||||
|     "cmsis", | ||||
|     "libopencm3", | ||||
|     "stm32cube", | ||||
|     "zephyr" | ||||
|   ], | ||||
|   "name": "STM32G0B1RE", | ||||
|   "upload": { | ||||
|     "maximum_ram_size": 147456, | ||||
|     "maximum_size": 524288, | ||||
|     "protocol": "stlink", | ||||
|     "protocols": [ | ||||
|       "stlink", | ||||
|       "jlink", | ||||
|       "cmsis-dap", | ||||
|       "blackmagic", | ||||
|       "mbed" | ||||
|     ] | ||||
|   }, | ||||
|   "url": "https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32g0-series/stm32g0x1.html", | ||||
|   "vendor": "ST" | ||||
| } | ||||
| @@ -30,7 +30,7 @@ if pioutil.is_pio_build(): | ||||
| 	else: | ||||
| 		platform_name = PackageSpec(platform_packages[0]).name | ||||
|  | ||||
| 	if platform_name in [ "usb-host-msc", "usb-host-msc-cdc-msc", "usb-host-msc-cdc-msc-2", "usb-host-msc-cdc-msc-3", "tool-stm32duino", "biqu-bx-workaround" ]: | ||||
| 	if platform_name in [ "usb-host-msc", "usb-host-msc-cdc-msc", "usb-host-msc-cdc-msc-2", "usb-host-msc-cdc-msc-3", "tool-stm32duino", "biqu-bx-workaround", "main" ]: | ||||
| 		platform_name = "framework-arduinoststm32" | ||||
|  | ||||
| 	FRAMEWORK_DIR = platform.get_package_dir(platform_name) | ||||
|   | ||||
| @@ -0,0 +1,428 @@ | ||||
| /* | ||||
|  ******************************************************************************* | ||||
|  * Copyright (c) 2020-2021, STMicroelectronics | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ******************************************************************************* | ||||
|  */ | ||||
| /* | ||||
|  * Automatically generated from STM32G0B1R(B-C-E)IxN.xml, STM32G0B1R(B-C-E)TxN.xml | ||||
|  * STM32G0C1R(C-E)IxN.xml, STM32G0C1R(C-E)TxN.xml | ||||
|  * CubeMX DB release 6.0.30 | ||||
|  */ | ||||
| #if !defined(CUSTOM_PERIPHERAL_PINS) | ||||
| #include "Arduino.h" | ||||
| #include "PeripheralPins.h" | ||||
|  | ||||
| /* ===== | ||||
|  * Notes: | ||||
|  * - The pins mentioned Px_y_ALTz are alternative possibilities which use other | ||||
|  *   HW peripheral instances. You can use them the same way as any other "normal" | ||||
|  *   pin (i.e. analogWrite(PA7_ALT1, 128);). | ||||
|  * | ||||
|  * - Commented lines are alternative possibilities which are not used per default. | ||||
|  *   If you change them, you will have to know what you do | ||||
|  * ===== | ||||
|  */ | ||||
|  | ||||
| //*** ADC *** | ||||
|  | ||||
| #ifdef HAL_ADC_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_ADC[] = { | ||||
|   {PA_0,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 | ||||
|   {PA_1,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 | ||||
|   {PA_2,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 | ||||
|   {PA_3,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 | ||||
|   {PA_4,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 | ||||
|   {PA_5,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 | ||||
|   {PA_6,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 | ||||
|   {PA_7,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 | ||||
|   {PB_0,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 | ||||
|   {PB_1,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 | ||||
|   {PB_2,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 | ||||
|   {PB_10, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 | ||||
|   {PB_11, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 | ||||
|   {PB_12, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16 | ||||
|   {PC_4,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17 | ||||
|   {PC_5,  ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 | ||||
|   {NC,    NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** DAC *** | ||||
|  | ||||
| #ifdef HAL_DAC_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_DAC[] = { | ||||
|   {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 | ||||
|   {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 | ||||
|   {NC,   NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** I2C *** | ||||
|  | ||||
| #ifdef HAL_I2C_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_I2C_SDA[] = { | ||||
|   {PA_6,         I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_6_ALT1,    I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)}, | ||||
|   {PA_10,        I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PA_10_ALT1,   I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_10_R,      I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PA_10_R_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_12,        I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PB_4,         I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PB_4_ALT1,    I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, | ||||
|   {PB_7,         I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PB_9,         I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PB_11,        I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PB_14,        I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PC_1,         I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, | ||||
|   {NC,           NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_I2C_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_I2C_SCL[] = { | ||||
|   {PA_7,        I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_7_ALT1,   I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)}, | ||||
|   {PA_9,        I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PA_9_ALT1,   I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_9_R,      I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PA_9_R_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PA_11,       I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PB_3,        I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, | ||||
|   {PB_3_ALT1,   I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, | ||||
|   {PB_6,        I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PB_8,        I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, | ||||
|   {PB_10,       I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PB_13,       I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, | ||||
|   {PC_0,        I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, | ||||
|   {NC,          NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** TIM *** | ||||
|  | ||||
| #ifdef HAL_TIM_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_TIM[] = { | ||||
|   {PA_0,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 | ||||
|   {PA_1,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 | ||||
|   {PA_1_ALT1,  TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 1)}, // TIM15_CH1N | ||||
|   {PA_2,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 | ||||
|   {PA_2_ALT1,  TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 0)}, // TIM15_CH1 | ||||
|   {PA_3,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 | ||||
|   {PA_3_ALT1,  TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 2, 0)}, // TIM15_CH2 | ||||
|   {PA_4,       TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1 | ||||
|   {PA_5,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 | ||||
|   {PA_6,       TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 | ||||
|   {PA_6_ALT1,  TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM16, 1, 0)}, // TIM16_CH1 | ||||
|   {PA_7,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N | ||||
|   {PA_7_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 | ||||
|   {PA_7_ALT2,  TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1 | ||||
|   {PA_7_ALT3,  TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM17, 1, 0)}, // TIM17_CH1 | ||||
|   {PA_8,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1 | ||||
|   {PA_9,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 | ||||
|   {PA_9_R,     TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 | ||||
|   {PA_10,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 | ||||
|   {PA_10_R,    TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 | ||||
|   {PA_11,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4 | ||||
|   {PA_15,      TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 | ||||
|   {PB_0,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N | ||||
|   {PB_0_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3 | ||||
|   {PB_1,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N | ||||
|   {PB_1_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4 | ||||
|   {PB_1_ALT2,  TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM14, 1, 0)}, // TIM14_CH1 | ||||
|   {PB_3,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 | ||||
|   {PB_3_ALT1,  TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 | ||||
|   {PB_4,       TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 | ||||
|   {PB_5,       TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 | ||||
|   {PB_6,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 | ||||
|   {PB_6_ALT1,  TIM4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 1, 0)}, // TIM4_CH1 | ||||
|   {PB_6_ALT2,  TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 1)}, // TIM16_CH1N | ||||
|   {PB_7,       TIM4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 2, 0)}, // TIM4_CH2 | ||||
|   {PB_7_ALT1,  TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 1)}, // TIM17_CH1N | ||||
|   {PB_8,       TIM4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 3, 0)}, // TIM4_CH3 | ||||
|   {PB_8_ALT1,  TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1 | ||||
|   {PB_9,       TIM4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 4, 0)}, // TIM4_CH4 | ||||
|   {PB_9_ALT1,  TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1 | ||||
|   {PB_10,      TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 | ||||
|   {PB_11,      TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 | ||||
|   {PB_13,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N | ||||
|   {PB_13_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 1)}, // TIM15_CH1N | ||||
|   {PB_14,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N | ||||
|   {PB_14_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 0)}, // TIM15_CH1 | ||||
|   {PB_15,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N | ||||
|   {PB_15_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N | ||||
|   {PB_15_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 2, 0)}, // TIM15_CH2 | ||||
|   {PC_1,       TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 | ||||
|   {PC_2,       TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 2, 0)}, // TIM15_CH2 | ||||
|   {PC_4,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 | ||||
|   {PC_5,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 | ||||
|   {PC_6,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 | ||||
|   {PC_6_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 | ||||
|   {PC_7,       TIM2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 | ||||
|   {PC_7_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 | ||||
|   {PC_8,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1 | ||||
|   {PC_8_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3 | ||||
|   {PC_9,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 | ||||
|   {PC_9_ALT1,  TIM3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4 | ||||
|   {PC_10,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 | ||||
|   {PC_11,      TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4 | ||||
|   {PC_12,      TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM14, 1, 0)}, // TIM14_CH1 | ||||
|   {PD_0,       TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1 | ||||
|   {PD_1,       TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1 | ||||
|   {PD_2,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N | ||||
|   {PD_3,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N | ||||
|   {PD_4,       TIM1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N | ||||
|   {PF_0,       TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM14, 1, 0)}, // TIM14_CH1 | ||||
|   {PF_1,       TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 1)}, // TIM15_CH1N | ||||
|   {NC,         NP,    0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** UART *** | ||||
|  | ||||
| #ifdef HAL_UART_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_UART_TX[] = { | ||||
|   {PA_0,       USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, | ||||
|   {PA_2,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, | ||||
|   {PA_2_ALT1,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PA_4,       USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, | ||||
|   {PA_5,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PA_9,       USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PA_9_R,     USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PA_14,      LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PA_14_ALT1, USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PB_0,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, | ||||
|   {PB_2,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_3,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PB_6,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PB_6_ALT1,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)}, | ||||
|   {PB_8,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_8_ALT1,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, | ||||
|   {PB_10,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_11,      LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PC_0,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PC_0_ALT1,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART6)}, | ||||
|   {PC_1,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PC_4,       USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PC_4_ALT1,  USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, | ||||
|   {PC_6,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PC_10,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, | ||||
|   {PC_10_ALT1, USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART4)}, | ||||
|   {PC_12,      USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PD_3,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PD_5,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, | ||||
|   {PF_2,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, | ||||
|   {NC,         NP,      0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_UART_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_UART_RX[] = { | ||||
|   {PA_1,       USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, | ||||
|   {PA_3,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, | ||||
|   {PA_3_ALT1,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PA_5,       USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, | ||||
|   {PA_10,      USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PA_10_R,    USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PA_13,      LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PA_15,      USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PB_0,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_1,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, | ||||
|   {PB_4,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PB_7,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PB_7_ALT1,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)}, | ||||
|   {PB_9,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_9_ALT1,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, | ||||
|   {PB_10,      LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PB_11,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PC_0,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PC_1,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PC_1_ALT1,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART6)}, | ||||
|   {PC_5,       USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PC_5_ALT1,  USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, | ||||
|   {PC_7,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PC_11,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, | ||||
|   {PC_11_ALT1, USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART4)}, | ||||
|   {PD_2,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PD_6,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, | ||||
|   {NC,         NP,      0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_UART_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_UART_RTS[] = { | ||||
|   {PA_1,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PA_7,       USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, | ||||
|   {PA_12,      USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PA_15,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_USART3)}, | ||||
|   {PA_15_ALT1, USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, | ||||
|   {PB_1,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, | ||||
|   {PB_1_ALT1,  LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PB_1_ALT2,  USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_3,       USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, | ||||
|   {PB_5,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, | ||||
|   {PB_12,      LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PB_14,      USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_14_ALT1, USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, | ||||
|   {PC_9,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PD_2,       USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, | ||||
|   {PD_4,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, | ||||
|   {PD_4_ALT1,  USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {PF_2,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {NC,         NP,      0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_UART_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_UART_CTS[] = { | ||||
|   {PA_0,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, | ||||
|   {PA_6,       LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, | ||||
|   {PA_6_ALT1,  USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PA_6_ALT2,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, | ||||
|   {PA_11,      USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, | ||||
|   {PB_0,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, | ||||
|   {PB_4,       USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, | ||||
|   {PB_6,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, | ||||
|   {PB_7,       USART4,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, | ||||
|   {PB_13,      LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, | ||||
|   {PB_13_ALT1, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, | ||||
|   {PB_15,      USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, | ||||
|   {PC_8,       LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, | ||||
|   {PD_3,       USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, | ||||
|   {PD_5,       USART5,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, | ||||
|   {NC,         NP,      0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** SPI *** | ||||
|  | ||||
| #ifdef HAL_SPI_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_SPI_MOSI[] = { | ||||
|   {PA_2,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_4,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PA_7,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_10,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PA_10_R,   SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PA_12,     SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_5,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, | ||||
|   {PB_7,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PB_11,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PB_15,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PC_3,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PC_12,     SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, | ||||
|   {PD_4,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PD_6,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, | ||||
|   {NC,        NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_SPI_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_SPI_MISO[] = { | ||||
|   {PA_3,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PA_6,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_9,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, | ||||
|   {PA_9_R,    SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, | ||||
|   {PA_11,     SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_2,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PB_4,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, | ||||
|   {PB_6,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, | ||||
|   {PB_14,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PC_2,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PC_11,     SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, | ||||
|   {PD_3,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PD_5,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, | ||||
|   {NC,        NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_SPI_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_SPI_SCLK[] = { | ||||
|   {PA_0,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PA_1,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_5,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_3,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, | ||||
|   {PB_8,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PB_10,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, | ||||
|   {PB_13,     SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PC_10,     SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, | ||||
|   {PD_1,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {NC,        NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_SPI_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_SPI_SSEL[] = { | ||||
|   {PA_4,       SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_4_ALT1,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, | ||||
|   {PA_8,       SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {PA_15,      SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, | ||||
|   {PB_0,       SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, | ||||
|   {PB_9,       SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, | ||||
|   {PB_12,      SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, | ||||
|   {PD_0,       SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, | ||||
|   {NC,         NP,   0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** FDCAN *** | ||||
|  | ||||
| #ifdef HAL_FDCAN_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_CAN_RD[] = { | ||||
|   {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PB_0,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PB_5,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PB_8,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PC_2,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PC_4,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PD_0,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {NC,    NP,     0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #ifdef HAL_FDCAN_MODULE_ENABLED | ||||
| WEAK const PinMap PinMap_CAN_TD[] = { | ||||
|   {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PB_1,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PB_6,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PB_9,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PC_3,  FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, | ||||
|   {PC_5,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {PD_1,  FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, | ||||
|   {NC,    NP,     0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** No ETHERNET *** | ||||
|  | ||||
| //*** No QUADSPI *** | ||||
|  | ||||
| //*** USB *** | ||||
|  | ||||
| #if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) | ||||
| WEAK const PinMap PinMap_USB_DRD_FS[] = { | ||||
|   // {PA_4,  USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE | ||||
|   {PA_11, USB_DRD_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DM | ||||
|   {PA_12, USB_DRD_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DP | ||||
|   // {PA_13, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE | ||||
|   // {PA_15, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USB)}, // USB_NOE | ||||
|   // {PC_9,  USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USB)}, // USB_NOE | ||||
|   {NC,    NP,         0} | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| //*** No SD *** | ||||
|  | ||||
| #endif /* !CUSTOM_PERIPHERAL_PINS */ | ||||
| @@ -0,0 +1,90 @@ | ||||
| /* Remap pin name */ | ||||
| PA_9_R       = PA_9    | PREMAP, | ||||
| PA_10_R      = PA_10   | PREMAP, | ||||
|  | ||||
| /* Alternate pin name */ | ||||
| PA_1_ALT1    = PA_1    | ALT1, | ||||
| PA_2_ALT1    = PA_2    | ALT1, | ||||
| PA_3_ALT1    = PA_3    | ALT1, | ||||
| PA_4_ALT1    = PA_4    | ALT1, | ||||
| PA_6_ALT1    = PA_6    | ALT1, | ||||
| PA_6_ALT2    = PA_6    | ALT2, | ||||
| PA_7_ALT1    = PA_7    | ALT1, | ||||
| PA_7_ALT2    = PA_7    | ALT2, | ||||
| PA_7_ALT3    = PA_7    | ALT3, | ||||
| PA_9_ALT1    = PA_9    | ALT1, | ||||
| PA_9_R_ALT1  = PA_9_R  | ALT1, | ||||
| PA_10_ALT1   = PA_10   | ALT1, | ||||
| PA_10_R_ALT1 = PA_10_R | ALT1, | ||||
| PA_14_ALT1   = PA_14   | ALT1, | ||||
| PA_15_ALT1   = PA_15   | ALT1, | ||||
| PB_0_ALT1    = PB_0    | ALT1, | ||||
| PB_1_ALT1    = PB_1    | ALT1, | ||||
| PB_1_ALT2    = PB_1    | ALT2, | ||||
| PB_3_ALT1    = PB_3    | ALT1, | ||||
| PB_4_ALT1    = PB_4    | ALT1, | ||||
| PB_5_ALT1    = PB_5    | ALT1, | ||||
| PB_6_ALT1    = PB_6    | ALT1, | ||||
| PB_6_ALT2    = PB_6    | ALT2, | ||||
| PB_7_ALT1    = PB_7    | ALT1, | ||||
| PB_8_ALT1    = PB_8    | ALT1, | ||||
| PB_9_ALT1    = PB_9    | ALT1, | ||||
| PB_13_ALT1   = PB_13   | ALT1, | ||||
| PB_14_ALT1   = PB_14   | ALT1, | ||||
| PB_15_ALT1   = PB_15   | ALT1, | ||||
| PB_15_ALT2   = PB_15   | ALT2, | ||||
| PC_0_ALT1    = PC_0    | ALT1, | ||||
| PC_1_ALT1    = PC_1    | ALT1, | ||||
| PC_4_ALT1    = PC_4    | ALT1, | ||||
| PC_5_ALT1    = PC_5    | ALT1, | ||||
| PC_6_ALT1    = PC_6    | ALT1, | ||||
| PC_7_ALT1    = PC_7    | ALT1, | ||||
| PC_8_ALT1    = PC_8    | ALT1, | ||||
| PC_9_ALT1    = PC_9    | ALT1, | ||||
| PC_10_ALT1   = PC_10   | ALT1, | ||||
| PC_11_ALT1   = PC_11   | ALT1, | ||||
| PD_4_ALT1    = PD_4    | ALT1, | ||||
|  | ||||
| /* SYS_WKUP */ | ||||
| #ifdef PWR_WAKEUP_PIN1 | ||||
|   SYS_WKUP1 = PA_0, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN2 | ||||
|   SYS_WKUP2 = PC_13, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN3 | ||||
|   SYS_WKUP3 = NC, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN4 | ||||
|   SYS_WKUP4 = PA_2, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN5 | ||||
|   SYS_WKUP5 = PC_5, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN6 | ||||
|   SYS_WKUP6 = PB_5, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN7 | ||||
|   SYS_WKUP7 = NC, | ||||
| #endif | ||||
| #ifdef PWR_WAKEUP_PIN8 | ||||
|   SYS_WKUP8 = NC, | ||||
| #endif | ||||
|  | ||||
| /* USB */ | ||||
| #ifdef USBCON | ||||
|   USB_DM  = PA_11, | ||||
|   USB_DP  = PA_12, | ||||
|   #ifdef USB_NOE_PA_4 | ||||
|     USB_NOE = PA_4, | ||||
|   #endif | ||||
|   #ifdef USB_NOE_PA_13 | ||||
|     USB_NOE = PA_13, | ||||
|   #endif | ||||
|   #ifdef USB_NOE_PA_15 | ||||
|     USB_NOE = PA_15, | ||||
|   #endif | ||||
|   #ifdef USB_NOE_PC_9 | ||||
|     USB_NOE = PC_9, | ||||
|   #endif | ||||
| #endif | ||||
| @@ -0,0 +1,177 @@ | ||||
| /** | ||||
|  ****************************************************************************** | ||||
|  * @file      LinkerScript.ld | ||||
|  * @author    Auto-generated by STM32CubeIDE | ||||
|  * @brief     Linker script for STM32G0B1RETx Device from STM32G0 series | ||||
|  *                      512Kbytes FLASH | ||||
|  *                      144Kbytes RAM | ||||
|  * | ||||
|  *            Set heap size, stack size and stack location according | ||||
|  *            to application requirements. | ||||
|  * | ||||
|  *            Set memory bank area and size if external memory is used | ||||
|  ****************************************************************************** | ||||
|  * @attention | ||||
|  * | ||||
|  * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|  * All rights reserved.</center></h2> | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /* Entry Point */ | ||||
| ENTRY(Reset_Handler) | ||||
|  | ||||
| /* Highest address of the user mode stack */ | ||||
| _estack = ORIGIN(RAM) + LENGTH(RAM);	/* end of "RAM" Ram type memory */ | ||||
|  | ||||
| _Min_Heap_Size = 0x200;	/* required amount of heap  */ | ||||
| _Min_Stack_Size = 0x400;	/* required amount of stack */ | ||||
|  | ||||
| /* Memories definition */ | ||||
| MEMORY | ||||
| { | ||||
|   RAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = LD_MAX_DATA_SIZE | ||||
|   FLASH    (rx)    : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET | ||||
| } | ||||
|  | ||||
| /* Sections */ | ||||
| SECTIONS | ||||
| { | ||||
|   /* The startup code into "FLASH" Rom type memory */ | ||||
|   .isr_vector : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     KEEP(*(.isr_vector)) /* Startup code */ | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   /* The program code and other data into "FLASH" Rom type memory */ | ||||
|   .text : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     *(.text)           /* .text sections (code) */ | ||||
|     *(.text*)          /* .text* sections (code) */ | ||||
|     *(.glue_7)         /* glue arm to thumb code */ | ||||
|     *(.glue_7t)        /* glue thumb to arm code */ | ||||
|     *(.eh_frame) | ||||
|  | ||||
|     KEEP (*(.init)) | ||||
|     KEEP (*(.fini)) | ||||
|  | ||||
|     . = ALIGN(4); | ||||
|     _etext = .;        /* define a global symbols at end of code */ | ||||
|   } >FLASH | ||||
|  | ||||
|   /* Constant data into "FLASH" Rom type memory */ | ||||
|   .rodata : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     *(.rodata)         /* .rodata sections (constants, strings, etc.) */ | ||||
|     *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */ | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   .ARM.extab   : { | ||||
|     . = ALIGN(4); | ||||
|     *(.ARM.extab* .gnu.linkonce.armextab.*) | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   .ARM : { | ||||
|     . = ALIGN(4); | ||||
|     __exidx_start = .; | ||||
|     *(.ARM.exidx*) | ||||
|     __exidx_end = .; | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   .preinit_array     : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     PROVIDE_HIDDEN (__preinit_array_start = .); | ||||
|     KEEP (*(.preinit_array*)) | ||||
|     PROVIDE_HIDDEN (__preinit_array_end = .); | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   .init_array : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     PROVIDE_HIDDEN (__init_array_start = .); | ||||
|     KEEP (*(SORT(.init_array.*))) | ||||
|     KEEP (*(.init_array*)) | ||||
|     PROVIDE_HIDDEN (__init_array_end = .); | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   .fini_array : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     PROVIDE_HIDDEN (__fini_array_start = .); | ||||
|     KEEP (*(SORT(.fini_array.*))) | ||||
|     KEEP (*(.fini_array*)) | ||||
|     PROVIDE_HIDDEN (__fini_array_end = .); | ||||
|     . = ALIGN(4); | ||||
|   } >FLASH | ||||
|  | ||||
|   /* Used by the startup to initialize data */ | ||||
|   _sidata = LOADADDR(.data); | ||||
|  | ||||
|   /* Initialized data sections into "RAM" Ram type memory */ | ||||
|   .data : | ||||
|   { | ||||
|     . = ALIGN(4); | ||||
|     _sdata = .;        /* create a global symbol at data start */ | ||||
|     *(.data)           /* .data sections */ | ||||
|     *(.data*)          /* .data* sections */ | ||||
|     *(.RamFunc)        /* .RamFunc sections */ | ||||
|     *(.RamFunc*)       /* .RamFunc* sections */ | ||||
|  | ||||
|     . = ALIGN(4); | ||||
|     _edata = .;        /* define a global symbol at data end */ | ||||
|  | ||||
|   } >RAM AT> FLASH | ||||
|  | ||||
|   /* Uninitialized data section into "RAM" Ram type memory */ | ||||
|   . = ALIGN(4); | ||||
|   .bss : | ||||
|   { | ||||
|     /* This is used by the startup in order to initialize the .bss section */ | ||||
|     _sbss = .;         /* define a global symbol at bss start */ | ||||
|     __bss_start__ = _sbss; | ||||
|     *(.bss) | ||||
|     *(.bss*) | ||||
|     *(COMMON) | ||||
|  | ||||
|     . = ALIGN(4); | ||||
|     _ebss = .;         /* define a global symbol at bss end */ | ||||
|     __bss_end__ = _ebss; | ||||
|   } >RAM | ||||
|  | ||||
|   /* User_heap_stack section, used to check that there is enough "RAM" Ram  type memory left */ | ||||
|   ._user_heap_stack : | ||||
|   { | ||||
|     . = ALIGN(8); | ||||
|     PROVIDE ( end = . ); | ||||
|     PROVIDE ( _end = . ); | ||||
|     . = . + _Min_Heap_Size; | ||||
|     . = . + _Min_Stack_Size; | ||||
|     . = ALIGN(8); | ||||
|   } >RAM | ||||
|  | ||||
|   /* Remove information from the compiler libraries */ | ||||
|   /DISCARD/ : | ||||
|   { | ||||
|     libc.a ( * ) | ||||
|     libm.a ( * ) | ||||
|     libgcc.a ( * ) | ||||
|   } | ||||
|  | ||||
|   .ARM.attributes 0 : { *(.ARM.attributes) } | ||||
| } | ||||
| @@ -0,0 +1,177 @@ | ||||
| /* | ||||
|  ******************************************************************************* | ||||
|  * Copyright (c) 2020-2021, STMicroelectronics | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ******************************************************************************* | ||||
|  */ | ||||
|  | ||||
| #if defined(STM32G0B1xx) | ||||
| #include "pins_arduino.h" | ||||
|  | ||||
| // Digital PinName array | ||||
| const PinName digitalPin[] = { | ||||
|   PA_0,   // D0/A0 | ||||
|   PA_1,   // D1/A1 | ||||
|   PA_2,   // D2/A2 | ||||
|   PA_3,   // D3/A3 | ||||
|   PA_4,   // D4/A4 | ||||
|   PA_5,   // D5/A5 | ||||
|   PA_6,   // D6/A6 | ||||
|   PA_7,   // D7/A7 | ||||
|   PA_8,   // D8 | ||||
|   PA_9,   // D9 | ||||
|   PA_10,  // D10 | ||||
|   PA_11,  // D11 | ||||
|   PA_12,  // D12 | ||||
|   PA_13,  // D13 | ||||
|   PA_14,  // D14 | ||||
|   PA_15,  // D15 | ||||
|   PB_0,   // D16/A8 | ||||
|   PB_1,   // D17/A9 | ||||
|   PB_2,   // D18/A10 | ||||
|   PB_3,   // D19 | ||||
|   PB_4,   // D20 | ||||
|   PB_5,   // D21 | ||||
|   PB_6,   // D22 | ||||
|   PB_7,   // D23 | ||||
|   PB_8,   // D24 | ||||
|   PB_9,   // D25 | ||||
|   PB_10,  // D26/A11 | ||||
|   PB_11,  // D27/A12 | ||||
|   PB_12,  // D28/A13 | ||||
|   PB_13,  // D29 | ||||
|   PB_14,  // D30 | ||||
|   PB_15,  // D31 | ||||
|   PC_0,   // D32 | ||||
|   PC_1,   // D33 | ||||
|   PC_2,   // D34 | ||||
|   PC_3,   // D35 | ||||
|   PC_4,   // D36/A14 | ||||
|   PC_5,   // D37/A15 | ||||
|   PC_6,   // D38 | ||||
|   PC_7,   // D39 | ||||
|   PC_8,   // D40 | ||||
|   PC_9,   // D41 | ||||
|   PC_10,  // D42 | ||||
|   PC_11,  // D43 | ||||
|   PC_12,  // D44 | ||||
|   PC_13,  // D45 | ||||
|   PC_14,  // D46 | ||||
|   PC_15,  // D47 | ||||
|   PD_0,   // D48 | ||||
|   PD_1,   // D49 | ||||
|   PD_2,   // D50 | ||||
|   PD_3,   // D51 | ||||
|   PD_4,   // D52 | ||||
|   PD_5,   // D53 | ||||
|   PD_6,   // D54 | ||||
|   PD_8,   // D55 | ||||
|   PD_9,   // D56 | ||||
|   PF_0,   // D57 | ||||
|   PF_1,   // D58 | ||||
|   PF_2,   // D59 | ||||
|   PA_9_R, // D60 | ||||
|   PA_10_R // D61 | ||||
| }; | ||||
|  | ||||
| // Analog (Ax) pin number array | ||||
| const uint32_t analogInputPin[] = { | ||||
|   0,  // A0,  PA0 | ||||
|   1,  // A1,  PA1 | ||||
|   2,  // A2,  PA2 | ||||
|   3,  // A3,  PA3 | ||||
|   4,  // A4,  PA4 | ||||
|   5,  // A5,  PA5 | ||||
|   6,  // A6,  PA6 | ||||
|   7,  // A7,  PA7 | ||||
|   16, // A8,  PB0 | ||||
|   17, // A9,  PB1 | ||||
|   18, // A10, PB2 | ||||
|   26, // A11, PB10 | ||||
|   27, // A12, PB11 | ||||
|   28, // A13, PB12 | ||||
|   36, // A14, PC4 | ||||
|   37  // A15, PC5 | ||||
| }; | ||||
|  | ||||
| // ---------------------------------------------------------------------------- | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|   * @brief  System Clock Configuration | ||||
|   *         The system Clock is configured as follows : | ||||
|   *            System Clock source            = PLL (HSE) | ||||
|   *            SYSCLK(Hz)                     = 64000000 | ||||
|   *            HCLK(Hz)                       = 64000000 | ||||
|   *            AHB Prescaler                  = 1 | ||||
|   *            APB1 Prescaler                 = 1 | ||||
|   *            PLL_M                          = 1 | ||||
|   *            PLL_N                          = 16 | ||||
|   *            PLL_R                          = 2 | ||||
|   *            PLL_P                          = 2 | ||||
|   *            PLL_Q                          = 2 | ||||
|   *            USB(Hz)                        = 48000000 (HSI48M) | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| WEAK void SystemClock_Config(void) | ||||
| { | ||||
|   RCC_OscInitTypeDef RCC_OscInitStruct = {0}; | ||||
|   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; | ||||
|   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; | ||||
|  | ||||
|   /** Configure the main internal regulator output voltage | ||||
|   */ | ||||
|   HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); | ||||
|   /** Initializes the RCC Oscillators according to the specified parameters | ||||
|   * in the RCC_OscInitTypeDef structure. | ||||
|   */ | ||||
|   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_HSI48; | ||||
|   RCC_OscInitStruct.HSEState = RCC_HSE_ON; | ||||
|   RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | ||||
|   RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; | ||||
|   RCC_OscInitStruct.PLL.PLLN = 16; | ||||
|   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; | ||||
|   RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; | ||||
|   RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; | ||||
|   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Initializes the CPU, AHB and APB buses clocks | ||||
|   */ | ||||
|   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK | ||||
|                               |RCC_CLOCKTYPE_PCLK1; | ||||
|   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; | ||||
|   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; | ||||
|   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; | ||||
|  | ||||
|   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Initializes the peripherals clocks | ||||
|   */ | ||||
|   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; | ||||
|   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; | ||||
|   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
| } | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif /* STM32G0B1xx */ | ||||
| @@ -0,0 +1,199 @@ | ||||
| /* | ||||
|  ******************************************************************************* | ||||
|  * Copyright (c) 2020-2021, STMicroelectronics | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ******************************************************************************* | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| /*---------------------------------------------------------------------------- | ||||
|  *        STM32 pins number | ||||
|  *----------------------------------------------------------------------------*/ | ||||
| #define PA0                     PIN_A0 | ||||
| #define PA1                     PIN_A1 | ||||
| #define PA2                     PIN_A2 | ||||
| #define PA3                     PIN_A3 | ||||
| #define PA4                     PIN_A4 | ||||
| #define PA5                     PIN_A5 | ||||
| #define PA6                     PIN_A6 | ||||
| #define PA7                     PIN_A7 | ||||
| #define PA8                     8 | ||||
| #define PA9                     9 | ||||
| #define PA10                    10 | ||||
| #define PA11                    11 | ||||
| #define PA12                    12 | ||||
| #define PA13                    13 | ||||
| #define PA14                    14 | ||||
| #define PA15                    15 | ||||
| #define PB0                     PIN_A8 | ||||
| #define PB1                     PIN_A9 | ||||
| #define PB2                     PIN_A10 | ||||
| #define PB3                     19 | ||||
| #define PB4                     20 | ||||
| #define PB5                     21 | ||||
| #define PB6                     22 | ||||
| #define PB7                     23 | ||||
| #define PB8                     24 | ||||
| #define PB9                     25 | ||||
| #define PB10                    PIN_A11 | ||||
| #define PB11                    PIN_A12 | ||||
| #define PB12                    PIN_A13 | ||||
| #define PB13                    29 | ||||
| #define PB14                    30 | ||||
| #define PB15                    31 | ||||
| #define PC0                     32 | ||||
| #define PC1                     33 | ||||
| #define PC2                     34 | ||||
| #define PC3                     35 | ||||
| #define PC4                     PIN_A14 | ||||
| #define PC5                     PIN_A15 | ||||
| #define PC6                     38 | ||||
| #define PC7                     39 | ||||
| #define PC8                     40 | ||||
| #define PC9                     41 | ||||
| #define PC10                    42 | ||||
| #define PC11                    43 | ||||
| #define PC12                    44 | ||||
| #define PC13                    45 | ||||
| #define PC14                    46 | ||||
| #define PC15                    47 | ||||
| #define PD0                     48 | ||||
| #define PD1                     49 | ||||
| #define PD2                     50 | ||||
| #define PD3                     51 | ||||
| #define PD4                     52 | ||||
| #define PD5                     53 | ||||
| #define PD6                     54 | ||||
| #define PD8                     55 | ||||
| #define PD9                     56 | ||||
| #define PF0                     57 | ||||
| #define PF1                     58 | ||||
| #define PF2                     59 | ||||
| #define PA9_R                   60 | ||||
| #define PA10_R                  61 | ||||
|  | ||||
| // Alternate pins number | ||||
| #define PA1_ALT1                (PA1    | ALT1) | ||||
| #define PA2_ALT1                (PA2    | ALT1) | ||||
| #define PA3_ALT1                (PA3    | ALT1) | ||||
| #define PA4_ALT1                (PA4    | ALT1) | ||||
| #define PA6_ALT1                (PA6    | ALT1) | ||||
| #define PA6_ALT2                (PA6    | ALT2) | ||||
| #define PA7_ALT1                (PA7    | ALT1) | ||||
| #define PA7_ALT2                (PA7    | ALT2) | ||||
| #define PA7_ALT3                (PA7    | ALT3) | ||||
| #define PA9_ALT1                (PA9    | ALT1) | ||||
| #define PA9_R_ALT1              (PA9_R  | ALT1) | ||||
| #define PA10_ALT1               (PA10   | ALT1) | ||||
| #define PA10_R_ALT1             (PA10_R | ALT1) | ||||
| #define PA14_ALT1               (PA14   | ALT1) | ||||
| #define PA15_ALT1               (PA15   | ALT1) | ||||
| #define PB0_ALT1                (PB0    | ALT1) | ||||
| #define PB1_ALT1                (PB1    | ALT1) | ||||
| #define PB1_ALT2                (PB1    | ALT2) | ||||
| #define PB3_ALT1                (PB3    | ALT1) | ||||
| #define PB4_ALT1                (PB4    | ALT1) | ||||
| #define PB5_ALT1                (PB5    | ALT1) | ||||
| #define PB6_ALT1                (PB6    | ALT1) | ||||
| #define PB6_ALT2                (PB6    | ALT2) | ||||
| #define PB7_ALT1                (PB7    | ALT1) | ||||
| #define PB8_ALT1                (PB8    | ALT1) | ||||
| #define PB9_ALT1                (PB9    | ALT1) | ||||
| #define PB13_ALT1               (PB13   | ALT1) | ||||
| #define PB14_ALT1               (PB14   | ALT1) | ||||
| #define PB15_ALT1               (PB15   | ALT1) | ||||
| #define PB15_ALT2               (PB15   | ALT2) | ||||
| #define PC0_ALT1                (PC0    | ALT1) | ||||
| #define PC1_ALT1                (PC1    | ALT1) | ||||
| #define PC4_ALT1                (PC4    | ALT1) | ||||
| #define PC5_ALT1                (PC5    | ALT1) | ||||
| #define PC6_ALT1                (PC6    | ALT1) | ||||
| #define PC7_ALT1                (PC7    | ALT1) | ||||
| #define PC8_ALT1                (PC8    | ALT1) | ||||
| #define PC9_ALT1                (PC9    | ALT1) | ||||
| #define PC10_ALT1               (PC10   | ALT1) | ||||
| #define PC11_ALT1               (PC11   | ALT1) | ||||
| #define PD4_ALT1                (PD4    | ALT1) | ||||
|  | ||||
| #define NUM_DIGITAL_PINS        62 | ||||
| #define NUM_REMAP_PINS          2 | ||||
| #define NUM_ANALOG_INPUTS       16 | ||||
|  | ||||
| // SPI definitions | ||||
| #ifndef PIN_SPI_SS | ||||
|   #define PIN_SPI_SS            PA4 | ||||
| #endif | ||||
| #ifndef PIN_SPI_MOSI | ||||
|   #define PIN_SPI_MOSI          PA7 | ||||
| #endif | ||||
| #ifndef PIN_SPI_MISO | ||||
|   #define PIN_SPI_MISO          PA6 | ||||
| #endif | ||||
| #ifndef PIN_SPI_SCK | ||||
|   #define PIN_SPI_SCK           PA5 | ||||
| #endif | ||||
|  | ||||
| // I2C definitions | ||||
| #ifndef PIN_WIRE_SDA | ||||
|   #define PIN_WIRE_SDA          PB6 | ||||
| #endif | ||||
| #ifndef PIN_WIRE_SCL | ||||
|   #define PIN_WIRE_SCL          PB7 | ||||
| #endif | ||||
|  | ||||
| // Timer Definitions | ||||
| // Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin | ||||
| #ifndef TIMER_TONE | ||||
|   #define TIMER_TONE            TIM6 | ||||
| #endif | ||||
| #ifndef TIMER_SERVO | ||||
|   #define TIMER_SERVO           TIM7 | ||||
| #endif | ||||
|  | ||||
| // UART Definitions | ||||
| #ifndef SERIAL_UART_INSTANCE | ||||
|   #define SERIAL_UART_INSTANCE  2 | ||||
| #endif | ||||
|  | ||||
| // Default pin used for generic 'Serial' instance | ||||
| // Mandatory for Firmata | ||||
| #ifndef PIN_SERIAL_RX | ||||
|   #define PIN_SERIAL_RX         PA3 | ||||
| #endif | ||||
| #ifndef PIN_SERIAL_TX | ||||
|   #define PIN_SERIAL_TX         PA2 | ||||
| #endif | ||||
|  | ||||
| /*---------------------------------------------------------------------------- | ||||
|  *        Arduino objects - C++ only | ||||
|  *----------------------------------------------------------------------------*/ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|   // These serial port names are intended to allow libraries and architecture-neutral | ||||
|   // sketches to automatically default to the correct port name for a particular type | ||||
|   // of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, | ||||
|   // the first hardware serial port whose RX/TX pins are not dedicated to another use. | ||||
|   // | ||||
|   // SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor | ||||
|   // | ||||
|   // SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial | ||||
|   // | ||||
|   // SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library | ||||
|   // | ||||
|   // SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins. | ||||
|   // | ||||
|   // SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX | ||||
|   //                            pins are NOT connected to anything by default. | ||||
|   #ifndef SERIAL_PORT_MONITOR | ||||
|     #define SERIAL_PORT_MONITOR   Serial | ||||
|   #endif | ||||
|   #ifndef SERIAL_PORT_HARDWARE | ||||
|     #define SERIAL_PORT_HARDWARE  Serial2 | ||||
|   #endif | ||||
| #endif | ||||
							
								
								
									
										39
									
								
								ini/stm32g0.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								ini/stm32g0.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| # | ||||
| # Marlin Firmware | ||||
| # PlatformIO Configuration File | ||||
| # | ||||
|  | ||||
| ################################# | ||||
| # | ||||
| # STM32G0 Architecture | ||||
| # | ||||
| # Naming Example: STM32G0B1RET6 | ||||
| # | ||||
| #   G : Foundation | ||||
| #   0 : Cortex M0+ core (0:M0, 1-2:M3, 3-4:M4, 7:M7) | ||||
| #  B1 : Line/Features | ||||
| #   R : 64 pins  (R:64 or 66, F:20) | ||||
| #   E : 512KB Flash-memory  (C:256KB, D:384KB, E:512KB, G:1024KB) | ||||
| #   T : LQFP package | ||||
| #   6 : -40...85°C   (7: ...105°C) | ||||
| # | ||||
| ################################# | ||||
|  | ||||
| # | ||||
| # BigTree SKR mini E3 V3.0 (STM32G0B1RET6 ARM Cortex-M0+) | ||||
| # | ||||
| [env:STM32G0B1RE_btt] | ||||
| platform          = ststm32@~14.1.0 | ||||
| platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip | ||||
| extends            = stm32_variant | ||||
| board              = marlin_STM32G0B1RE | ||||
| board_build.offset          = 0x2000 | ||||
| board_upload.offset_address = 0x08002000 | ||||
| build_flags        = ${stm32_variant.build_flags} | ||||
|                    -DADC_RESOLUTION=12 | ||||
|                    -DPIN_SERIAL4_RX=PC_11 -DPIN_SERIAL4_TX=PC_10 | ||||
|                    -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 | ||||
|                    -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 | ||||
|                    -DSTEP_TIMER_IRQ_PRIO=0 | ||||
| upload_protocol   = stlink | ||||
| debug_tool        = stlink | ||||
| @@ -30,6 +30,7 @@ extra_configs = | ||||
|     ini/stm32f4.ini | ||||
|     ini/stm32f7.ini | ||||
|     ini/stm32h7.ini | ||||
|     ini/stm32g0.ini | ||||
|     ini/teensy.ini | ||||
|  | ||||
| # | ||||
|   | ||||
		Reference in New Issue
	
	Block a user