From 6efa27461799c86a238d9529fbf18026396e6c3e Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 4 Apr 2026 01:41:26 +0000
Subject: [PATCH 01/10] Enable ACCGYRO_BMI270 feature
---
configs/HOBBYWING_XROTORF7CONV/config.h | 1 +
configs/HWH7/config.h | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/configs/HOBBYWING_XROTORF7CONV/config.h b/configs/HOBBYWING_XROTORF7CONV/config.h
index 838ab5ba2..2f4ebfb93 100644
--- a/configs/HOBBYWING_XROTORF7CONV/config.h
+++ b/configs/HOBBYWING_XROTORF7CONV/config.h
@@ -30,6 +30,7 @@
#define USE_ACC_SPI_MPU6500
#define USE_ACC_SPI_ICM42688P
#define USE_ACCGYRO_LSM6DSK320X
+#define USE_ACCGYRO_BMI270
#define USE_GYRO
#define USE_GYRO_SPI_MPU6500
#define USE_GYRO_SPI_ICM42688P
diff --git a/configs/HWH7/config.h b/configs/HWH7/config.h
index 0f9dcd88d..0949d0504 100644
--- a/configs/HWH7/config.h
+++ b/configs/HWH7/config.h
@@ -39,7 +39,7 @@
#define USE_GYRO_SPI_ICM42688P
#define USE_ACCGYRO_LSM6DSV16X
-
+#define USE_ACCGYRO_BMI270
//barometer
#define USE_BARO
#define USE_BARO_DPS310
From 6b2c5c00cbf4d8f0b34136bc1deae413eb6352a4 Mon Sep 17 00:00:00 2001
From: Hebo98 <1098466228@qq.com>
Date: Thu, 9 Apr 2026 11:21:53 +0800
Subject: [PATCH 02/10] Add HWF435 target
---
configs/HWF435/config.h | 151 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 151 insertions(+)
create mode 100644 configs/HWF435/config.h
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
new file mode 100644
index 000000000..38b0b001d
--- /dev/null
+++ b/configs/HWF435/config.h
@@ -0,0 +1,151 @@
+/*
+ * This file is part of Betaflight.
+ *
+ * Betaflight is free software. You can redistribute this software
+ * and/or modify this software 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.
+ *
+ * Betaflight 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.
+ *
+ * If not, see .
+ */
+
+#pragma once
+
+#define FC_TARGET_MCU AT32F435G
+#define BOARD_NAME HWF435
+#define MANUFACTURER_ID HOWI
+#define SYSTEM_HSE_MHZ 8
+
+#define USE_GYRO
+#define USE_ACC
+#define USE_GYRO_SPI_MPU6500
+#define USE_ACC_SPI_MPU6500
+#define USE_GYRO_SPI_ICM42688P
+#define USE_ACC_SPI_ICM42688P
+#define USE_ACCGYRO_BMI270
+#define USE_ACCGYRO_LSM6DSK320X
+
+#define USE_BARO
+#define USE_BARO_DPS310
+
+#define USE_FLASH
+#define USE_FLASH_W25Q128FV
+#define USE_MAX7456
+
+#define BEEPER_INVERTED
+#define BEEPER_PIN PB2
+
+#define LED_STRIP_PIN PH2 /* TIM5 CH1 */
+#define LED0_PIN PD2
+
+#define MOTOR1_PIN PC6 /* TIM8 CH1 */
+#define MOTOR2_PIN PC7 /* TIM8 CH2 */
+#define MOTOR3_PIN PC8 /* TIM8 CH3 */
+#define MOTOR4_PIN PC9 /* TIM8 CH4 */
+#define MOTOR5_PIN PB0 /* TIM3 CH3 */
+#define MOTOR6_PIN PB1 /* TIM3 CH4 */
+#define MOTOR7_PIN PB4 /* TIM3 CH1 */
+#define MOTOR8_PIN PB5 /* TIM3 CH2 */
+
+#define SERVO1_PIN PB6 /* TIM4 CH1 */
+#define SERVO2_PIN PB7 /* TIM4 CH2 */
+#define SERVO3_PIN PB3 /* TIM2 CH2 */
+
+#define UART1_TX_PIN PA9
+#define UART1_RX_PIN PA10
+#define UART2_TX_PIN PA2
+#define UART2_RX_PIN PA3
+#define UART3_TX_PIN PB10
+#define UART3_RX_PIN PB11
+#define UART4_TX_PIN PH3
+#define UART4_RX_PIN PA1
+#define UART7_TX_PIN PC0
+#define UART7_RX_PIN PC1
+#define UART8_TX_PIN PC2
+#define UART8_RX_PIN PC3
+
+#define USE_MAG
+#define USE_GPS
+
+#define I2C1_SCL_PIN PB8
+#define I2C1_SDA_PIN PB9
+
+#define SPI1_SCK_PIN PA5
+#define SPI1_SDI_PIN PA6
+#define SPI1_SDO_PIN PA7
+#define SPI2_SCK_PIN PB13
+#define SPI2_SDI_PIN PB14
+#define SPI2_SDO_PIN PB15
+#define SPI3_SCK_PIN PC10
+#define SPI3_SDI_PIN PC11
+#define SPI3_SDO_PIN PC12
+
+#define ADC_VBAT_PIN PA0
+#define ADC_CURR_PIN PC5
+#define ADC1_DMA_OPT 9
+
+#define FLASH_CS_PIN PB12
+#define MAX7456_SPI_CS_PIN PA15
+#define GYRO_1_EXTI_PIN PC4
+#define GYRO_1_CS_PIN PA4
+#define GYRO_1_CLKIN_PIN PA8 // TMR1_CH1( Gyro CLKIN )
+
+#define PINIO1_PIN PC13
+#define PINIO1_CONFIG 1
+#define PINIO1_BOX 40
+#define BOX_USER1_NAME "CAM 1,2"
+
+#define GYRO_1_SPI_INSTANCE SPI1
+#define GYRO_1_ALIGN CW180_DEG
+
+#define BARO_I2C_INSTANCE I2CDEV_1
+#define MAG_I2C_INSTANCE I2CDEV_1
+#define FLASH_SPI_INSTANCE SPI2
+#define MAX7456_SPI_INSTANCE SPI3
+
+
+
+#define TIMER_PIN_MAPPING \
+ TIMER_PIN_MAP( 0, PC6, 2, 0) \
+ TIMER_PIN_MAP( 1, PC7, 2, 1) \
+ TIMER_PIN_MAP( 2, PC8, 2, 2) \
+ TIMER_PIN_MAP( 3, PC9, 2, 3) \
+ TIMER_PIN_MAP( 4, PB0, 2, 4) \
+ TIMER_PIN_MAP( 5, PB1, 2, 5) \
+ TIMER_PIN_MAP( 6, PB4, 1, 6) \
+ TIMER_PIN_MAP( 7, PB5, 1, 7) \
+ TIMER_PIN_MAP( 8, PB6, 1, -1) \
+ TIMER_PIN_MAP( 9, PB7, 1, -1) \
+ TIMER_PIN_MAP(10, PB3, 1, -1) \
+ TIMER_PIN_MAP(11, PH2, 1, 11) \
+ TIMER_PIN_MAP(12, PA8, 1, -1)
+
+
+
+#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_FLASH
+
+#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC
+#define DEFAULT_CURRENT_METER_SOURCE CURRENT_METER_ADC
+#define DEFAULT_VOLTAGE_METER_SCALE 168
+#define DEFAULT_CURRENT_METER_SCALE 117
+
+#define DEFAULT_MIXER MIXER_OCTOX8
+#define DEFAULT_DSHOT_BITBANG DSHOT_BITBANG_OFF
+#define DEFAULT_MOTOR_DSHOT_SPEED PWM_TYPE_DSHOT600
+
+#define DEFAULT_ALIGN_BOARD_ROLL 180
+#define DEFAULT_ALIGN_BOARD_PITCH 180
+#define DEFAULT_ALIGN_BOARD_YAW 270
+
+#define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
+#define SERIALRX_PROVIDER SERIALRX_CRSF
+#define SERIALRX_UART SERIAL_PORT_USART7
+#define OSD_DISPLAYPORT_DEVICE MAX7456
+
From c226eb6fd9fd61b71491e8b5a4d5c5a794c81edf Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Fri, 10 Apr 2026 09:03:24 +0800
Subject: [PATCH 03/10] Apply suggestions from code review
Remove MPU6500 definitions as requested.
Co-authored-by: Hebo98 <72866967+Hebo98@users.noreply.github.com>
---
configs/HWF435/config.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 38b0b001d..74faae8d7 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -25,8 +25,6 @@
#define USE_GYRO
#define USE_ACC
-#define USE_GYRO_SPI_MPU6500
-#define USE_ACC_SPI_MPU6500
#define USE_GYRO_SPI_ICM42688P
#define USE_ACC_SPI_ICM42688P
#define USE_ACCGYRO_BMI270
From 25a118cbc10da066c868cb0601a29244e99495cd Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 09:18:03 +0800
Subject: [PATCH 04/10] UpdateRemove unused MAG and GPS defines from HWF435
config configs/HWF435/config.h
HWF435 does not have onboard MAG or GNSS modules according to the schematic, so these user feature defines should not be enabled in config.h.
Co-authored-by: Osiris Inferi
---
configs/HWF435/config.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 74faae8d7..78e288ac5 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -69,9 +69,6 @@
#define UART8_TX_PIN PC2
#define UART8_RX_PIN PC3
-#define USE_MAG
-#define USE_GPS
-
#define I2C1_SCL_PIN PB8
#define I2C1_SDA_PIN PB9
From 8cd1f1068a61d4e4ac0bd11d5b70807c9306aea3 Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 09:23:50 +0800
Subject: [PATCH 05/10] Update configs/HWF435/config.h
Sorry, that was a typo.
Co-authored-by: Osiris Inferi
---
configs/HWF435/config.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 78e288ac5..1f99c3e63 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -132,7 +132,7 @@
#define DEFAULT_CURRENT_METER_SCALE 117
#define DEFAULT_MIXER MIXER_OCTOX8
-#define DEFAULT_DSHOT_BITBANG DSHOT_BITBANG_OFF
+#define DEFAULT_DSHOT_BITBANG DSHOT_BITBANG_ON
#define DEFAULT_MOTOR_DSHOT_SPEED PWM_TYPE_DSHOT600
#define DEFAULT_ALIGN_BOARD_ROLL 180
From 00e5a09532d9a0833b12d82c328adea47feafd67 Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 09:29:08 +0800
Subject: [PATCH 06/10] Update configs/HWF435/config.h
Thank you for your advice.
Co-authored-by: Osiris Inferi
---
configs/HWF435/config.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 1f99c3e63..aa1f1a7f2 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -133,7 +133,8 @@
#define DEFAULT_MIXER MIXER_OCTOX8
#define DEFAULT_DSHOT_BITBANG DSHOT_BITBANG_ON
-#define DEFAULT_MOTOR_DSHOT_SPEED PWM_TYPE_DSHOT600
+#define DEFAULT_MOTOR_DSHOT_SPEED PWM_TYPE_DSHOT300
+#define DEFAULT_PID_PROCESS_DENOM 2
#define DEFAULT_ALIGN_BOARD_ROLL 180
#define DEFAULT_ALIGN_BOARD_PITCH 180
From d593c13a95428591f348809cf84feec60d5b7f8b Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 09:49:03 +0800
Subject: [PATCH 07/10] Simplify HWF435 board alignment
The previous roll/pitch/yaw alignment was equivalent to a 90 degree yaw rotation, so simplify it to DEFAULT_ALIGN_BOARD_YAW 90.
---
configs/HWF435/config.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index aa1f1a7f2..e9ace4bea 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -136,9 +136,8 @@
#define DEFAULT_MOTOR_DSHOT_SPEED PWM_TYPE_DSHOT300
#define DEFAULT_PID_PROCESS_DENOM 2
-#define DEFAULT_ALIGN_BOARD_ROLL 180
-#define DEFAULT_ALIGN_BOARD_PITCH 180
-#define DEFAULT_ALIGN_BOARD_YAW 270
+
+#define DEFAULT_ALIGN_BOARD_YAW 90
#define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
#define SERIALRX_PROVIDER SERIALRX_CRSF
From d380f15c4cf3b4b4c05ffb17766b3f68d38ceb93 Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 09:53:58 +0800
Subject: [PATCH 08/10] Update configs/HWF435/config.h
Co-authored-by: Osiris Inferi
---
configs/HWF435/config.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index e9ace4bea..41e9286bb 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -142,5 +142,4 @@
#define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
#define SERIALRX_PROVIDER SERIALRX_CRSF
#define SERIALRX_UART SERIAL_PORT_USART7
-#define OSD_DISPLAYPORT_DEVICE MAX7456
From 6487919ae4d63d969078f0ad2046d0ccd52941c9 Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Sat, 25 Apr 2026 10:25:40 +0800
Subject: [PATCH 09/10] Added a switchable VTX control port.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Based on osirisinferi’s suggestion, we added a user-switchable VTX control port. The specific control port is PC14.
---
configs/HWF435/config.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 41e9286bb..5f8454c99 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -97,6 +97,11 @@
#define PINIO1_BOX 40
#define BOX_USER1_NAME "CAM 1,2"
+#define PINIO2_PIN PC14
+#define PINIO2_CONFIG 1
+#define PINIO2_BOX 41
+#define BOX_USER2_NAME "SW_VTX"
+
#define GYRO_1_SPI_INSTANCE SPI1
#define GYRO_1_ALIGN CW180_DEG
From dbb9f76867c9a014ba2fc80586b1b7daeb62e49f Mon Sep 17 00:00:00 2001
From: Hebo98 <72866967+Hebo98@users.noreply.github.com>
Date: Thu, 14 May 2026 17:46:44 +0800
Subject: [PATCH 10/10] Update configs/HWF435/config.h
Co-authored-by: Osiris Inferi
---
configs/HWF435/config.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configs/HWF435/config.h b/configs/HWF435/config.h
index 5f8454c99..31f319d3d 100644
--- a/configs/HWF435/config.h
+++ b/configs/HWF435/config.h
@@ -125,7 +125,8 @@
TIMER_PIN_MAP( 9, PB7, 1, -1) \
TIMER_PIN_MAP(10, PB3, 1, -1) \
TIMER_PIN_MAP(11, PH2, 1, 11) \
- TIMER_PIN_MAP(12, PA8, 1, -1)
+ TIMER_PIN_MAP(12, PA8, 1, -1) \
+ TIMER_PIN_MAP(13, PB2, 2, -1)