diff --git a/Makefile b/Makefile
index 09d8502260..d01ae6d59e 100644
--- a/Makefile
+++ b/Makefile
@@ -56,14 +56,13 @@ FORKNAME = betaflight
# Working directories
ROOT := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
+PLATFORM_DIR := $(ROOT)/src/platform
SRC_DIR := $(ROOT)/src/main
OBJECT_DIR := $(ROOT)/obj/main
BIN_DIR := $(ROOT)/obj
CMSIS_DIR := $(ROOT)/lib/main/CMSIS
-INCLUDE_DIRS := $(SRC_DIR) \
- $(ROOT)/src/main/target
+INCLUDE_DIRS := $(SRC_DIR)
-LINKER_DIR := $(ROOT)/src/link
MAKE_SCRIPT_DIR := $(ROOT)/mk
## V : Set verbosity level based on the V= parameter
@@ -83,13 +82,14 @@ endif
# some targets use parallel build by default
# MAKEFLAGS is valid only inside target, do not use this at parse phase
DEFAULT_PARALLEL_JOBS := # all jobs in parallel (for backward compatibility)
-MAKE_PARALLEL = $(if $(filter -j%, $(MAKEFLAGS)),$(EMPTY),-j$(DEFAULT_PARALLEL_JOBS))
+MAKE_PARALLEL = $(if $(filter -j%, $(MAKEFLAGS)),$(EMPTY),-j$(DEFAULT_PARALLEL_JOBS))
# pre-build sanity checks
include $(MAKE_SCRIPT_DIR)/checks.mk
# basic target list
-BASE_TARGETS := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard $(ROOT)/src/main/target/*/target.mk)))))
+PLATFORMS := $(sort $(notdir $(patsubst /%,%, $(wildcard $(PLATFORM_DIR)/*))))
+BASE_TARGETS := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard $(PLATFORM_DIR)/*/target/*/target.mk)))))
# configure some directories that are relative to wherever ROOT_DIR is located
TOOLS_DIR ?= $(ROOT)/tools
@@ -109,7 +109,7 @@ include $(MAKE_SCRIPT_DIR)/$(OSFAMILY).mk
include $(MAKE_SCRIPT_DIR)/tools.mk
# Search path for sources
-VPATH := $(SRC_DIR):$(SRC_DIR)/startup
+VPATH := $(SRC_DIR)
FATFS_DIR = $(ROOT)/lib/main/FatFS
FATFS_SRC = $(notdir $(wildcard $(FATFS_DIR)/*.c))
CSOURCES := $(shell find $(SRC_DIR) -name '*.c')
@@ -132,9 +132,15 @@ endif
# default xtal value
HSE_VALUE ?= 8000000
-CI_EXCLUDED_TARGETS := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard $(ROOT)/src/main/target/*/.exclude)))))
-CI_TARGETS := $(filter-out $(CI_EXCLUDED_TARGETS), $(BASE_TARGETS)) $(filter CRAZYBEEF4SX1280 CRAZYBEEF4FR STM32F4DISCOVERY IFLIGHT_BLITZ_F722 NUCLEOF446 SPRACINGH7EXTREME SPRACINGH7RF, $(BASE_CONFIGS))
-include $(ROOT)/src/main/target/$(TARGET)/target.mk
+CI_EXCLUDED_TARGETS := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard $(PLATFORM_DIR)/*/target/*/.exclude)))))
+CI_TARGETS := $(filter-out $(CI_EXCLUDED_TARGETS), $(BASE_TARGETS)) $(filter STM32F4DISCOVERY CRAZYBEEF4SX1280 CRAZYBEEF4FR IFLIGHT_BLITZ_F722 NUCLEOF446 SPRACINGH7EXTREME SPRACINGH7RF, $(BASE_CONFIGS))
+
+TARGET_PLATFORM := $(notdir $(patsubst %/,%,$(subst target/$(TARGET)/,, $(dir $(wildcard $(PLATFORM_DIR)/*/target/$(TARGET)/target.mk)))))
+TARGET_PLATFORM_DIR := $(PLATFORM_DIR)/$(TARGET_PLATFORM)
+LINKER_DIR := $(TARGET_PLATFORM_DIR)/link
+VPATH := $(VPATH):$(TARGET_PLATFORM_DIR):$(TARGET_PLATFORM_DIR)/startup
+
+include $(TARGET_PLATFORM_DIR)/target/$(TARGET)/target.mk
REVISION := norevision
ifeq ($(shell git diff --shortstat),)
@@ -173,7 +179,6 @@ OPTIMISE_SIZE := -Os
LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_SPEED)
endif
-VPATH := $(VPATH):$(MAKE_SCRIPT_DIR)/mcu
VPATH := $(VPATH):$(MAKE_SCRIPT_DIR)
# start specific includes
@@ -185,13 +190,13 @@ ifeq ($(TARGET_MCU_FAMILY),)
$(error No TARGET_MCU_FAMILY specified. Is the target.mk valid for $(TARGET)?)
endif
-TARGET_FLAGS := -D$(TARGET) -D$(TARGET_MCU_FAMILY) $(TARGET_FLAGS)
+TARGET_FLAGS := -D$(TARGET) -D$(TARGET_PLATFORM) -D$(TARGET_MCU_FAMILY) $(TARGET_FLAGS)
ifneq ($(CONFIG),)
-TARGET_FLAGS := $(TARGET_FLAGS) -DUSE_CONFIG
+TARGET_FLAGS := $(TARGET_FLAGS) -DUSE_CONFIG
endif
-include $(MAKE_SCRIPT_DIR)/mcu/$(TARGET_MCU_FAMILY).mk
+include $(TARGET_PLATFORM_DIR)/mk/$(TARGET_MCU_FAMILY).mk
# openocd specific includes
include $(MAKE_SCRIPT_DIR)/openocd.mk
@@ -211,8 +216,7 @@ ifneq ($(HSE_VALUE),)
DEVICE_FLAGS := $(DEVICE_FLAGS) -DHSE_VALUE=$(HSE_VALUE)
endif
-TARGET_DIR = $(ROOT)/src/main/target/$(TARGET)
-TARGET_DIR_SRC = $(notdir $(wildcard $(TARGET_DIR)/*.c))
+TARGET_DIR = $(TARGET_PLATFORM_DIR)/target/$(TARGET)
.DEFAULT_GOAL := hex
diff --git a/mk/source.mk b/mk/source.mk
index b4fe31814f..4822210aa7 100644
--- a/mk/source.mk
+++ b/mk/source.mk
@@ -48,7 +48,6 @@ COMMON_SRC = \
build/debug.c \
build/debug_pin.c \
build/version.c \
- $(TARGET_DIR_SRC) \
main.c \
$(PG_SRC) \
common/bitarray.c \
@@ -98,6 +97,7 @@ COMMON_SRC = \
drivers/bus_spi_config.c \
drivers/bus_spi_pinconfig.c \
drivers/buttons.c \
+ drivers/camera_control.c \
drivers/display.c \
drivers/display_canvas.c \
drivers/dma_common.c \
diff --git a/src/main/drivers/mcu/stm32/camera_control.c b/src/main/drivers/camera_control.c
similarity index 70%
rename from src/main/drivers/mcu/stm32/camera_control.c
rename to src/main/drivers/camera_control.c
index 2e92243ed2..b787448436 100644
--- a/src/main/drivers/mcu/stm32/camera_control.c
+++ b/src/main/drivers/camera_control.c
@@ -1,19 +1,20 @@
/*
- * This file is part of Cleanflight and Betaflight.
+ * This file is part of Betaflight.
*
- * Cleanflight and Betaflight are 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 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.
*
- * Cleanflight and Betaflight are distributed in the hope that they
- * 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 software.
+ * You should have received a copy of the GNU General Public
+ * License along with this software.
*
* If not, see .
*/
@@ -29,30 +30,17 @@
#include
#include "drivers/camera_control_impl.h"
-#include "drivers/rcc.h"
#include "drivers/io.h"
-#include "drivers/nvic.h"
#include "drivers/pwm_output.h"
#include "drivers/time.h"
#include "pg/pg_ids.h"
-#define CAMERA_CONTROL_PWM_RESOLUTION 128
-#define CAMERA_CONTROL_SOFT_PWM_RESOLUTION 448
-
#ifdef CURRENT_TARGET_CPU_VOLTAGE
#define ADC_VOLTAGE CURRENT_TARGET_CPU_VOLTAGE
#else
#define ADC_VOLTAGE 3.3f
#endif
-#if !defined(STM32F411xE) && !defined(STM32F7) && !defined(STM32H7) && !defined(STM32G4)
-#define CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-#include "build/atomic.h"
-#endif
-
-#define CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
-#include "drivers/timer.h"
-
#ifdef USE_OSD
#include "osd/osd.h"
#endif
@@ -85,7 +73,7 @@ static struct {
static uint32_t endTimeMillis;
#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-static void cameraControlHi(void)
+void cameraControlHi(void)
{
if (cameraControlRuntime.inverted) {
IOLo(cameraControlRuntime.io);
@@ -94,7 +82,7 @@ static void cameraControlHi(void)
}
}
-static void cameraControlLo(void)
+void cameraControlLo(void)
{
if (cameraControlRuntime.inverted) {
IOHi(cameraControlRuntime.io);
@@ -102,19 +90,6 @@ static void cameraControlLo(void)
IOLo(cameraControlRuntime.io);
}
}
-
-void TIM6_DAC_IRQHandler(void)
-{
- cameraControlHi();
- TIM6->SR = 0;
-}
-
-void TIM7_IRQHandler(void)
-{
- cameraControlLo();
-
- TIM7->SR = 0;
-}
#endif
void cameraControlInit(void)
@@ -136,7 +111,7 @@ void cameraControlInit(void)
IOConfigGPIOAF(cameraControlRuntime.io, IOCFG_AF_PP, timerHardware->alternateFunction);
- pwmOutConfig(&cameraControlRuntime.channel, timerHardware, timerClock(TIM6), CAMERA_CONTROL_PWM_RESOLUTION, 0, cameraControlRuntime.inverted);
+ cameraControlHardwarePwmInit(&cameraControlRuntime.channel, timerHardware, cameraControlRuntime.inverted);
cameraControlRuntime.period = CAMERA_CONTROL_PWM_RESOLUTION;
*cameraControlRuntime.channel.ccr = cameraControlRuntime.period;
@@ -151,19 +126,7 @@ void cameraControlInit(void)
cameraControlRuntime.period = CAMERA_CONTROL_SOFT_PWM_RESOLUTION;
cameraControlRuntime.enabled = true;
-
- NVIC_InitTypeDef nvicTIM6 = {
- TIM6_DAC_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER), ENABLE
- };
- NVIC_Init(&nvicTIM6);
- NVIC_InitTypeDef nvicTIM7 = {
- TIM7_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER), ENABLE
- };
- NVIC_Init(&nvicTIM7);
-
- RCC->APB1ENR |= RCC_APB1Periph_TIM6 | RCC_APB1Periph_TIM7;
- TIM6->PSC = 0;
- TIM7->PSC = 0;
+ cameraControlSoftwarePwmInit();
#endif
} else if (CAMERA_CONTROL_MODE_DAC == cameraControlConfig()->mode) {
// @todo not yet implemented
@@ -183,13 +146,14 @@ void cameraControlProcess(uint32_t currentTimeUs)
}
}
+#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
+
static float calculateKeyPressVoltage(const cameraControlKey_e key)
{
const int buttonResistance = cameraControlConfig()->buttonResistanceValues[key] * 100;
return 1.0e-2f * cameraControlConfig()->refVoltage * buttonResistance / (100 * cameraControlConfig()->internalResistance + buttonResistance);
}
-#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
static float calculatePWMDutyCycle(const cameraControlKey_e key)
{
const float voltage = calculateKeyPressVoltage(key);
@@ -231,21 +195,7 @@ void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs)
delay(cameraControlConfig()->keyDelayMs + holdDurationMs);
cameraControlHi();
} else {
- TIM6->CNT = hiTime;
- TIM6->ARR = cameraControlRuntime.period;
-
- TIM7->CNT = 0;
- TIM7->ARR = cameraControlRuntime.period;
-
- // Start two timers as simultaneously as possible
- ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
- TIM6->CR1 = TIM_CR1_CEN;
- TIM7->CR1 = TIM_CR1_CEN;
- }
-
- // Enable interrupt generation
- TIM6->DIER = TIM_IT_Update;
- TIM7->DIER = TIM_IT_Update;
+ cameraControlSoftwarePwmEnable(hiTime, cameraControlRuntime.period);
const uint32_t endTime = millis() + cameraControlConfig()->keyDelayMs + holdDurationMs;
@@ -253,10 +203,7 @@ void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs)
while (millis() < endTime);
// Disable timers and interrupt generation
- TIM6->CR1 &= ~TIM_CR1_CEN;
- TIM7->CR1 &= ~TIM_CR1_CEN;
- TIM6->DIER = 0;
- TIM7->DIER = 0;
+ cameraControlSoftwarePwmDisable();
// Reset to idle state
IOHi(cameraControlRuntime.io);
@@ -267,4 +214,4 @@ void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs)
}
}
-#endif
+#endif // USE_CAMERA_CONTROL
diff --git a/src/main/drivers/camera_control_impl.h b/src/main/drivers/camera_control_impl.h
index 320f6352b8..df3852772c 100644
--- a/src/main/drivers/camera_control_impl.h
+++ b/src/main/drivers/camera_control_impl.h
@@ -22,6 +22,10 @@
#include "io_types.h"
#include "pg/pg.h"
+#include "drivers/pwm_output.h"
+
+#define CAMERA_CONTROL_PWM_RESOLUTION 128
+#define CAMERA_CONTROL_SOFT_PWM_RESOLUTION 448
typedef enum {
CAMERA_CONTROL_KEY_ENTER,
@@ -58,3 +62,11 @@ void cameraControlInit(void);
void cameraControlProcess(uint32_t currentTimeUs);
void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs);
+
+void cameraControlHi(void);
+void cameraControlLo(void);
+
+void cameraControlSoftwarePwmInit(void);
+void cameraControlSoftwarePwmEnable(uint32_t hiTime, uint32_t period);
+void cameraControlSoftwarePwmDisable(void);
+void cameraControlHardwarePwmInit(timerChannel_t *channel, const timerHardware_t *timerHardware, uint8_t inverted);
diff --git a/src/main/drivers/dma.h b/src/main/drivers/dma.h
index 330126b3bb..2b727044d5 100644
--- a/src/main/drivers/dma.h
+++ b/src/main/drivers/dma.h
@@ -23,11 +23,11 @@
#include "drivers/resource.h"
#if defined(USE_ATBSP_DRIVER)
-#include "drivers/mcu/at32/dma_atbsp.h"
+#include "dma_atbsp.h"
#endif
#if defined(APM32F4)
-#include "drivers/mcu/apm32/dma_apm32.h"
+#include "dma_apm32.h"
#endif
#define CACHE_LINE_SIZE 32
diff --git a/src/main/drivers/mcu/apm32/camera_control.c b/src/main/drivers/mcu/apm32/camera_control.c
deleted file mode 100644
index 45e9de23d6..0000000000
--- a/src/main/drivers/mcu/apm32/camera_control.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * This file is part of Cleanflight and Betaflight.
- *
- * Cleanflight and Betaflight are 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.
- *
- * Cleanflight and Betaflight are distributed in the hope that they
- * 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 software.
- *
- * If not, see .
- */
-
-#include "platform.h"
-
-#ifdef USE_CAMERA_CONTROL
-
-#ifndef CAMERA_CONTROL_PIN
-#define CAMERA_CONTROL_PIN NONE
-#endif
-
-#include
-
-#include "drivers/camera_control_impl.h"
-#include "drivers/rcc.h"
-#include "drivers/io.h"
-#include "drivers/nvic.h"
-#include "drivers/pwm_output.h"
-#include "drivers/time.h"
-#include "pg/pg_ids.h"
-
-#define CAMERA_CONTROL_PWM_RESOLUTION 128
-#define CAMERA_CONTROL_SOFT_PWM_RESOLUTION 448
-
-#ifdef CURRENT_TARGET_CPU_VOLTAGE
-#define ADC_VOLTAGE CURRENT_TARGET_CPU_VOLTAGE
-#else
-#define ADC_VOLTAGE 3.3f
-#endif
-
-#if !defined(STM32F411xE) && !defined(STM32F7) && !defined(STM32H7) && !defined(STM32G4)
-#define CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-#include "build/atomic.h"
-#endif
-
-#define CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
-#include "drivers/timer.h"
-
-#ifdef USE_OSD
-#include "osd/osd.h"
-#endif
-
-PG_REGISTER_WITH_RESET_FN(cameraControlConfig_t, cameraControlConfig, PG_CAMERA_CONTROL_CONFIG, 0);
-
-void pgResetFn_cameraControlConfig(cameraControlConfig_t *cameraControlConfig)
-{
- cameraControlConfig->mode = CAMERA_CONTROL_MODE_HARDWARE_PWM;
- cameraControlConfig->refVoltage = 330;
- cameraControlConfig->keyDelayMs = 180;
- cameraControlConfig->internalResistance = 470;
- cameraControlConfig->ioTag = IO_TAG(CAMERA_CONTROL_PIN);
- cameraControlConfig->inverted = 0; // Output is inverted externally
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_ENTER] = 450;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_LEFT] = 270;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_UP] = 150;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_RIGHT] = 68;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_DOWN] = 0;
-}
-
-static struct {
- bool enabled;
- IO_t io;
- timerChannel_t channel;
- uint32_t period;
- uint8_t inverted;
-} cameraControlRuntime;
-
-static uint32_t endTimeMillis;
-
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-static void cameraControlHi(void)
-{
- if (cameraControlRuntime.inverted) {
- IOLo(cameraControlRuntime.io);
- } else {
- IOHi(cameraControlRuntime.io);
- }
-}
-
-static void cameraControlLo(void)
-{
- if (cameraControlRuntime.inverted) {
- IOHi(cameraControlRuntime.io);
- } else {
- IOLo(cameraControlRuntime.io);
- }
-}
-
-void TMR6_DAC_IRQHandler(void)
-{
- cameraControlHi();
- TMR6->STS = 0;
-}
-
-void TMR7_IRQHandler(void)
-{
- cameraControlLo();
-
- TMR7->STS = 0;
-}
-#endif
-
-void cameraControlInit(void)
-{
- if (cameraControlConfig()->ioTag == IO_TAG_NONE)
- return;
-
- cameraControlRuntime.inverted = cameraControlConfig()->inverted;
- cameraControlRuntime.io = IOGetByTag(cameraControlConfig()->ioTag);
- IOInit(cameraControlRuntime.io, OWNER_CAMERA_CONTROL, 0);
-
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
- const timerHardware_t *timerHardware = timerAllocate(cameraControlConfig()->ioTag, OWNER_CAMERA_CONTROL, 0);
-
- if (!timerHardware) {
- return;
- }
-
- IOConfigGPIOAF(cameraControlRuntime.io, IOCFG_AF_PP, timerHardware->alternateFunction);
-
- pwmOutConfig(&cameraControlRuntime.channel, timerHardware, timerClock(TMR6), CAMERA_CONTROL_PWM_RESOLUTION, 0, cameraControlRuntime.inverted);
-
- cameraControlRuntime.period = CAMERA_CONTROL_PWM_RESOLUTION;
- *cameraControlRuntime.channel.ccr = cameraControlRuntime.period;
- cameraControlRuntime.enabled = true;
-#endif
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-
- IOConfigGPIO(cameraControlRuntime.io, IOCFG_OUT_PP);
- cameraControlHi();
-
- cameraControlRuntime.period = CAMERA_CONTROL_SOFT_PWM_RESOLUTION;
- cameraControlRuntime.enabled = true;
-
- DAL_NVIC_SetPriority(TMR6_DAC_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
- DAL_NVIC_EnableIRQ(TMR6_DAC_IRQn);
-
- DAL_NVIC_SetPriority(TMR7_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
- DAL_NVIC_EnableIRQ(TMR7_IRQn);
-
- __DAL_RCM_TMR6_CLK_ENABLE();
- __DAL_RCM_TMR7_CLK_ENABLE();
- DDL_TMR_SetPrescaler(TMR6, 0);
- DDL_TMR_SetPrescaler(TMR7, 0);
-#endif
- } else if (CAMERA_CONTROL_MODE_DAC == cameraControlConfig()->mode) {
- // @todo not yet implemented
- }
-}
-
-void cameraControlProcess(uint32_t currentTimeUs)
-{
- if (endTimeMillis && currentTimeUs >= 1000 * endTimeMillis) {
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
- *cameraControlRuntime.channel.ccr = cameraControlRuntime.period;
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-
- }
-
- endTimeMillis = 0;
- }
-}
-
-static float calculateKeyPressVoltage(const cameraControlKey_e key)
-{
- const int buttonResistance = cameraControlConfig()->buttonResistanceValues[key] * 100;
- return 1.0e-2f * cameraControlConfig()->refVoltage * buttonResistance / (100 * cameraControlConfig()->internalResistance + buttonResistance);
-}
-
-#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
-static float calculatePWMDutyCycle(const cameraControlKey_e key)
-{
- const float voltage = calculateKeyPressVoltage(key);
-
- return voltage / ADC_VOLTAGE;
-}
-#endif
-
-void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs)
-{
- if (!cameraControlRuntime.enabled)
- return;
-
- if (key >= CAMERA_CONTROL_KEYS_COUNT)
- return;
-
-#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
- const float dutyCycle = calculatePWMDutyCycle(key);
-#else
- (void) holdDurationMs;
-#endif
-
-#ifdef USE_OSD
- // Force OSD timeout so we are alone on the display.
- resumeRefreshAt = 0;
-#endif
-
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
- *cameraControlRuntime.channel.ccr = lrintf(dutyCycle * cameraControlRuntime.period);
- endTimeMillis = millis() + cameraControlConfig()->keyDelayMs + holdDurationMs;
-#endif
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
- const uint32_t hiTime = lrintf(dutyCycle * cameraControlRuntime.period);
-
- if (0 == hiTime) {
- cameraControlLo();
- delay(cameraControlConfig()->keyDelayMs + holdDurationMs);
- cameraControlHi();
- } else {
- DDL_TMR_SetCounter(TMR6, hiTime);
- DDL_TMR_SetAutoReload(TMR6, cameraControlRuntime.period);
-
- DDL_TMR_SetCounter(TMR7, 0);
- DDL_TMR_SetAutoReload(TMR7, cameraControlRuntime.period);
-
- // Start two timers as simultaneously as possible
- ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
- DDL_TMR_EnableCounter(TMR6);
- DDL_TMR_EnableCounter(TMR7);
- }
-
- // Enable interrupt generation
- DDL_TMR_EnableIT_UPDATE(TMR6);
- DDL_TMR_EnableIT_UPDATE(TMR7);
-
- const uint32_t endTime = millis() + cameraControlConfig()->keyDelayMs + holdDurationMs;
-
- // Wait to give the camera a chance at registering the key press
- while (millis() < endTime);
-
- // Disable timers and interrupt generation
- DDL_TMR_DisableCounter(TMR6);
- DDL_TMR_DisableCounter(TMR7);
-
- TMR6->DIEN = 0;
- TMR7->DIEN = 0;
-
- // Reset to idle state
- IOHi(cameraControlRuntime.io);
- }
-#endif
- } else if (CAMERA_CONTROL_MODE_DAC == cameraControlConfig()->mode) {
- // @todo not yet implemented
- }
-}
-
-#endif // USE_CAMERA_CONTROL
diff --git a/src/main/drivers/mcu/at32/camera_control.c b/src/main/drivers/mcu/at32/camera_control.c
deleted file mode 100644
index 3930e41eaa..0000000000
--- a/src/main/drivers/mcu/at32/camera_control.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * This file is part of Cleanflight and Betaflight.
- *
- * Cleanflight and Betaflight are 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.
- *
- * Cleanflight and Betaflight are distributed in the hope that they
- * 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 software.
- *
- * If not, see .
- */
-
-#include "platform.h"
-
-#ifdef USE_CAMERA_CONTROL
-
-#ifndef CAMERA_CONTROL_PIN
-#define CAMERA_CONTROL_PIN NONE
-#endif
-
-#include
-
-#include "drivers/camera_control_impl.h"
-#include "drivers/rcc.h"
-#include "drivers/io.h"
-#include "drivers/nvic.h"
-#include "drivers/pwm_output.h"
-#include "drivers/time.h"
-#include "pg/pg_ids.h"
-
-#define CAMERA_CONTROL_PWM_RESOLUTION 128
-#define CAMERA_CONTROL_SOFT_PWM_RESOLUTION 448
-
-#ifdef CURRENT_TARGET_CPU_VOLTAGE
-#define ADC_VOLTAGE CURRENT_TARGET_CPU_VOLTAGE
-#else
-#define ADC_VOLTAGE 3.3f
-#endif
-
-#if !defined(STM32F411xE) && !defined(STM32F7) && !defined(STM32H7) && !defined(STM32G4)
-#define CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-#include "build/atomic.h"
-#endif
-
-#define CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
-#include "drivers/timer.h"
-
-#ifdef USE_OSD
-#include "osd/osd.h"
-#endif
-
-PG_REGISTER_WITH_RESET_FN(cameraControlConfig_t, cameraControlConfig, PG_CAMERA_CONTROL_CONFIG, 0);
-
-void pgResetFn_cameraControlConfig(cameraControlConfig_t *cameraControlConfig)
-{
- cameraControlConfig->mode = CAMERA_CONTROL_MODE_HARDWARE_PWM;
- cameraControlConfig->refVoltage = 330;
- cameraControlConfig->keyDelayMs = 180;
- cameraControlConfig->internalResistance = 470;
- cameraControlConfig->ioTag = IO_TAG(CAMERA_CONTROL_PIN);
- cameraControlConfig->inverted = 0; // Output is inverted externally
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_ENTER] = 450;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_LEFT] = 270;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_UP] = 150;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_RIGHT] = 68;
- cameraControlConfig->buttonResistanceValues[CAMERA_CONTROL_KEY_DOWN] = 0;
-}
-
-static struct {
- bool enabled;
- IO_t io;
- timerChannel_t channel;
- uint32_t period;
- uint8_t inverted;
-} cameraControlRuntime;
-
-static uint32_t endTimeMillis;
-
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-static void cameraControlHi(void)
-{
- if (cameraControlRuntime.inverted) {
- IOLo(cameraControlRuntime.io);
- } else {
- IOHi(cameraControlRuntime.io);
- }
-}
-
-static void cameraControlLo(void)
-{
- if (cameraControlRuntime.inverted) {
- IOHi(cameraControlRuntime.io);
- } else {
- IOLo(cameraControlRuntime.io);
- }
-}
-
-void TIM6_DAC_IRQHandler(void)
-{
- cameraControlHi();
-
- tmr_flag_clear(TMR6, TMR_OVF_FLAG);
-}
-
-void TIM7_IRQHandler(void)
-{
- cameraControlLo();
-
- tmr_flag_clear(TMR7, TMR_OVF_FLAG);
-
-}
-#endif
-
-void cameraControlInit(void)
-{
- if (cameraControlConfig()->ioTag == IO_TAG_NONE)
- return;
-
- cameraControlRuntime.inverted = cameraControlConfig()->inverted;
- cameraControlRuntime.io = IOGetByTag(cameraControlConfig()->ioTag);
- IOInit(cameraControlRuntime.io, OWNER_CAMERA_CONTROL, 0);
-
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
- const timerHardware_t *timerHardware = timerAllocate(cameraControlConfig()->ioTag, OWNER_CAMERA_CONTROL, 0);
-
- if (!timerHardware) {
- return;
- }
-
- IOConfigGPIOAF(cameraControlRuntime.io, IOCFG_AF_PP, timerHardware->alternateFunction);
-
- pwmOutConfig(&cameraControlRuntime.channel, timerHardware, timerClock(TMR6), CAMERA_CONTROL_PWM_RESOLUTION, 0, cameraControlRuntime.inverted);
-
-
- cameraControlRuntime.period = CAMERA_CONTROL_PWM_RESOLUTION;
- *cameraControlRuntime.channel.ccr = cameraControlRuntime.period;
- cameraControlRuntime.enabled = true;
-#endif
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
-
- IOConfigGPIO(cameraControlRuntime.io, IOCFG_OUT_PP);
- cameraControlHi();
-
- cameraControlRuntime.period = CAMERA_CONTROL_SOFT_PWM_RESOLUTION;
- cameraControlRuntime.enabled = true;
-
- nvic_irq_enable(TMR6_DAC_GLOBAL_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
- RCC_ClockCmd(RCC_APB1(TMR6), ENABLE);
- tmr_div_value_set(TMR6, 0);
-
- nvic_irq_enable(TMR7_GLOBAL_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
- RCC_ClockCmd(RCC_APB1(TMR7), ENABLE);
- tmr_div_value_set(TMR7, 0);
-
-#endif
- } else if (CAMERA_CONTROL_MODE_DAC == cameraControlConfig()->mode) {
- // @todo not yet implemented
- }
-}
-
-void cameraControlProcess(uint32_t currentTimeUs)
-{
- if (endTimeMillis && currentTimeUs >= 1000 * endTimeMillis) {
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
- *cameraControlRuntime.channel.ccr = cameraControlRuntime.period;
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-
- }
-
- endTimeMillis = 0;
- }
-}
-
-static float calculateKeyPressVoltage(const cameraControlKey_e key)
-{
- const int buttonResistance = cameraControlConfig()->buttonResistanceValues[key] * 100;
- return 1.0e-2f * cameraControlConfig()->refVoltage * buttonResistance / (100 * cameraControlConfig()->internalResistance + buttonResistance);
-}
-
-#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
-static float calculatePWMDutyCycle(const cameraControlKey_e key)
-{
- const float voltage = calculateKeyPressVoltage(key);
-
- return voltage / ADC_VOLTAGE;
-}
-#endif
-
-void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs)
-{
- if (!cameraControlRuntime.enabled)
- return;
-
- if (key >= CAMERA_CONTROL_KEYS_COUNT)
- return;
-
-#if defined(CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE) || defined(CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE)
- const float dutyCycle = calculatePWMDutyCycle(key);
-#else
- (void) holdDurationMs;
-#endif
-
-#ifdef USE_OSD
- // Force OSD timeout so we are alone on the display.
- resumeRefreshAt = 0;
-#endif
-
- if (CAMERA_CONTROL_MODE_HARDWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
- *cameraControlRuntime.channel.ccr = lrintf(dutyCycle * cameraControlRuntime.period);
- endTimeMillis = millis() + cameraControlConfig()->keyDelayMs + holdDurationMs;
-#endif
- } else if (CAMERA_CONTROL_MODE_SOFTWARE_PWM == cameraControlConfig()->mode) {
-#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
- const uint32_t hiTime = lrintf(dutyCycle * cameraControlRuntime.period);
-
- if (0 == hiTime) {
- cameraControlLo();
- delay(cameraControlConfig()->keyDelayMs + holdDurationMs);
- cameraControlHi();
- } else {
- tmr_counter_value_set(TMR6, hiTime);
- tmr_period_value_set(TMR6, cameraControlRuntime.period);
-
- tmr_counter_value_set(TMR7, 0);
- tmr_period_value_set(TMR7, cameraControlRuntime.period);
-
- ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
- tmr_counter_enable(TMR6, TRUE);
- tmr_counter_enable(TMR7, TRUE);
- }
-
- tmr_interrupt_enable(TMR6, TMR_OVF_INT, TRUE);
- tmr_interrupt_enable(TMR7, TMR_OVF_INT, TRUE);
-
- const uint32_t endTime = millis() + cameraControlConfig()->keyDelayMs + holdDurationMs;
-
- // Wait to give the camera a chance at registering the key press
- while (millis() < endTime);
-
- // Disable timers and interrupt generation
- ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
- tmr_counter_enable(TMR6, FALSE);
- tmr_counter_enable(TMR7, FALSE);
- }
-
- tmr_interrupt_enable(TMR6, TMR_OVF_INT, FALSE);
- tmr_interrupt_enable(TMR7, TMR_OVF_INT, FALSE);
-
- // Reset to idle state
- IOHi(cameraControlRuntime.io);
- }
-#endif
- } else if (CAMERA_CONTROL_MODE_DAC == cameraControlConfig()->mode) {
- // @todo not yet implemented
- }
-}
-
-#endif
diff --git a/src/main/target/APM32F407/target.mk b/src/main/target/APM32F407/target.mk
deleted file mode 100644
index 80ac8b3339..0000000000
--- a/src/main/target/APM32F407/target.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET_MCU := APM32F405xx
-TARGET_MCU_FAMILY := APM32F4
-
diff --git a/src/main/drivers/mcu/apm32/adc_apm32f4xx.c b/src/platform/APM32/adc_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/adc_apm32f4xx.c
rename to src/platform/APM32/adc_apm32f4xx.c
diff --git a/src/main/drivers/mcu/apm32/apm32f4xx_ddl_ex.h b/src/platform/APM32/apm32f4xx_ddl_ex.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/apm32f4xx_ddl_ex.h
rename to src/platform/APM32/apm32f4xx_ddl_ex.h
diff --git a/src/main/drivers/mcu/apm32/bus_i2c_apm32.c b/src/platform/APM32/bus_i2c_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/bus_i2c_apm32.c
rename to src/platform/APM32/bus_i2c_apm32.c
diff --git a/src/main/drivers/mcu/apm32/bus_i2c_apm32_init.c b/src/platform/APM32/bus_i2c_apm32_init.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/bus_i2c_apm32_init.c
rename to src/platform/APM32/bus_i2c_apm32_init.c
diff --git a/src/main/drivers/mcu/apm32/bus_spi_apm32.c b/src/platform/APM32/bus_spi_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/bus_spi_apm32.c
rename to src/platform/APM32/bus_spi_apm32.c
diff --git a/src/platform/APM32/camera_control_apm32.c b/src/platform/APM32/camera_control_apm32.c
new file mode 100644
index 0000000000..b34467c5a5
--- /dev/null
+++ b/src/platform/APM32/camera_control_apm32.c
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this software.
+ *
+ * If not, see .
+ */
+
+#include "platform.h"
+
+#ifdef USE_CAMERA_CONTROL
+
+#include
+
+#include "drivers/camera_control_impl.h"
+#include "drivers/nvic.h"
+#include "drivers/pwm_output.h"
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+#include "build/atomic.h"
+#endif
+
+#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
+void cameraControlHardwarePwmInit(timerChannel_t *channel, const timerHardware_t *timerHardware, uint8_t inverted)
+{
+ pwmOutConfig(channel, timerHardware, timerClock(TMR6), CAMERA_CONTROL_PWM_RESOLUTION, 0, inverted);
+}
+#endif
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+void TMR6_DAC_IRQHandler(void)
+{
+ cameraControlHi();
+ TMR6->STS = 0;
+}
+
+void TMR7_IRQHandler(void)
+{
+ cameraControlLo();
+ TMR7->STS = 0;
+}
+
+void cameraControlSoftwarePwmInit(void)
+{
+ DAL_NVIC_SetPriority(TMR6_DAC_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
+ DAL_NVIC_EnableIRQ(TMR6_DAC_IRQn);
+
+ DAL_NVIC_SetPriority(TMR7_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
+ DAL_NVIC_EnableIRQ(TMR7_IRQn);
+
+ __DAL_RCM_TMR6_CLK_ENABLE();
+ __DAL_RCM_TMR7_CLK_ENABLE();
+ DDL_TMR_SetPrescaler(TMR6, 0);
+ DDL_TMR_SetPrescaler(TMR7, 0);
+}
+
+void cameraControlSoftwarePwmEnable(uint32_t hiTime, uint32_t period)
+{
+ DDL_TMR_SetCounter(TMR6, hiTime);
+ DDL_TMR_SetAutoReload(TMR6, period);
+
+ DDL_TMR_SetCounter(TMR7, 0);
+ DDL_TMR_SetAutoReload(TMR7, period);
+
+ // Start two timers as simultaneously as possible
+ ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
+ DDL_TMR_EnableCounter(TMR6);
+ DDL_TMR_EnableCounter(TMR7);
+ }
+
+ // Enable interrupt generation
+ DDL_TMR_EnableIT_UPDATE(TMR6);
+ DDL_TMR_EnableIT_UPDATE(TMR7);
+}
+
+void cameraControlSoftwarePwmDisable(void)
+{
+ DDL_TMR_DisableCounter(TMR6);
+ DDL_TMR_DisableCounter(TMR7);
+
+ TMR6->DIEN = 0;
+ TMR7->DIEN = 0;
+}
+#endif
+
+#endif // USE_CAMERA_CONTROL
diff --git a/src/main/drivers/mcu/apm32/debug.c b/src/platform/APM32/debug.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/debug.c
rename to src/platform/APM32/debug.c
diff --git a/src/main/drivers/mcu/apm32/dma_apm32.h b/src/platform/APM32/dma_apm32.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/dma_apm32.h
rename to src/platform/APM32/dma_apm32.h
diff --git a/src/main/drivers/mcu/apm32/dma_apm32f4xx.c b/src/platform/APM32/dma_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/dma_apm32f4xx.c
rename to src/platform/APM32/dma_apm32f4xx.c
diff --git a/src/main/drivers/mcu/apm32/dma_reqmap_mcu.c b/src/platform/APM32/dma_reqmap_mcu.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/dma_reqmap_mcu.c
rename to src/platform/APM32/dma_reqmap_mcu.c
diff --git a/src/main/drivers/mcu/apm32/dma_reqmap_mcu.h b/src/platform/APM32/dma_reqmap_mcu.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/dma_reqmap_mcu.h
rename to src/platform/APM32/dma_reqmap_mcu.h
diff --git a/src/main/drivers/mcu/apm32/dshot_bitbang.c b/src/platform/APM32/dshot_bitbang.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/dshot_bitbang.c
rename to src/platform/APM32/dshot_bitbang.c
diff --git a/src/main/drivers/mcu/apm32/dshot_bitbang_ddl.c b/src/platform/APM32/dshot_bitbang_ddl.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/dshot_bitbang_ddl.c
rename to src/platform/APM32/dshot_bitbang_ddl.c
diff --git a/src/main/drivers/mcu/apm32/eint_apm32.c b/src/platform/APM32/eint_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/eint_apm32.c
rename to src/platform/APM32/eint_apm32.c
diff --git a/src/main/drivers/mcu/apm32/io_apm32.c b/src/platform/APM32/io_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/io_apm32.c
rename to src/platform/APM32/io_apm32.c
diff --git a/src/main/drivers/mcu/apm32/light_ws2811strip_apm32.c b/src/platform/APM32/light_ws2811strip_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/light_ws2811strip_apm32.c
rename to src/platform/APM32/light_ws2811strip_apm32.c
diff --git a/src/link/apm32_flash_f405.ld b/src/platform/APM32/link/apm32_flash_f405.ld
similarity index 96%
rename from src/link/apm32_flash_f405.ld
rename to src/platform/APM32/link/apm32_flash_f405.ld
index 121c7e8da9..2a03fd2c04 100644
--- a/src/link/apm32_flash_f405.ld
+++ b/src/platform/APM32/link/apm32_flash_f405.ld
@@ -37,4 +37,4 @@ REGION_ALIAS("VECTAB", RAM)
REGION_ALIAS("MOVABLE_FLASH", FLASH1)
-INCLUDE "stm32_flash_f4_split.ld"
+INCLUDE "../../STM32/link/stm32_flash_f4_split.ld"
diff --git a/src/link/apm32_flash_f407.ld b/src/platform/APM32/link/apm32_flash_f407.ld
similarity index 96%
rename from src/link/apm32_flash_f407.ld
rename to src/platform/APM32/link/apm32_flash_f407.ld
index 3e4ed3b4ca..d0fa8fef96 100644
--- a/src/link/apm32_flash_f407.ld
+++ b/src/platform/APM32/link/apm32_flash_f407.ld
@@ -37,4 +37,4 @@ REGION_ALIAS("VECTAB", RAM)
REGION_ALIAS("MOVABLE_FLASH", FLASH1)
-INCLUDE "stm32_flash_f4_split.ld"
+INCLUDE "../../STM32/link/stm32_flash_f4_split.ld"
diff --git a/mk/mcu/APM32F4.mk b/src/platform/APM32/mk/APM32F4.mk
similarity index 72%
rename from mk/mcu/APM32F4.mk
rename to src/platform/APM32/mk/APM32F4.mk
index ce435a81cb..e5957025b5 100644
--- a/mk/mcu/APM32F4.mk
+++ b/src/platform/APM32/mk/APM32F4.mk
@@ -111,8 +111,8 @@ DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \
VPATH := $(VPATH):$(ROOT)/lib/main/APM32F4/Libraries/Device/Geehy/APM32F4xx
INCLUDE_DIRS := $(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/apm32 \
- $(SRC_DIR)/drivers/mcu/apm32
+ $(TARGET_PLATFORM_DIR)/startup \
+ $(TARGET_PLATFORM_DIR)
CMSIS_SRC :=
INCLUDE_DIRS := $(INCLUDE_DIRS) \
@@ -121,9 +121,9 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
$(USBCDC_DIR)/Inc \
$(USBMSC_DIR)/Inc \
$(CMSIS_DIR)/Geehy/APM32F4xx/Include \
- $(SRC_DIR)/drivers/mcu/apm32/usb/vcp \
- $(SRC_DIR)/drivers/mcu/apm32/usb/msc \
- $(SRC_DIR)/drivers/mcu/apm32/usb \
+ $(TARGET_PLATFORM_DIR)/usb/vcp \
+ $(TARGET_PLATFORM_DIR)/usb/msc \
+ $(TARGET_PLATFORM_DIR)/usb \
$(ROOT)/lib/main/CMSIS/Core/Include \
$(SRC_DIR)/msc
@@ -135,59 +135,59 @@ DEVICE_FLAGS = -DUSE_DAL_DRIVER -DHSE_VALUE=$(HSE_VALUE) -DAPM32
ifeq ($(TARGET_MCU),APM32F405xx)
DEVICE_FLAGS += -DAPM32F405xx
LD_SCRIPT = $(LINKER_DIR)/apm32_flash_f405.ld
-STARTUP_SRC = apm32/startup_apm32f405xx.S
+STARTUP_SRC = startup/startup_apm32f405xx.S
MCU_FLASH_SIZE := 1024
else ifeq ($(TARGET_MCU),APM32F407xx)
DEVICE_FLAGS += -DAPM32F407xx
LD_SCRIPT = $(LINKER_DIR)/apm32_flash_f407.ld
-STARTUP_SRC = apm32/startup_apm32f407xx.S
+STARTUP_SRC = startup/startup_apm32f407xx.S
MCU_FLASH_SIZE := 1024
else
-$(error TARGET_MCU [$(TARGET_MCU] is not supported)
+$(error TARGET_MCU [$(TARGET_MCU)] is not supported)
endif
MCU_COMMON_SRC = \
- startup/apm32/system_apm32f4xx.c \
+ startup/system_apm32f4xx.c \
drivers/inverter.c \
drivers/dshot_bitbang_decode.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/apm32/bus_spi_apm32.c \
- drivers/mcu/apm32/bus_i2c_apm32.c \
- drivers/mcu/apm32/bus_i2c_apm32_init.c \
- drivers/mcu/apm32/camera_control.c \
- drivers/mcu/apm32/debug.c \
- drivers/mcu/apm32/dma_reqmap_mcu.c \
- drivers/mcu/apm32/dshot_bitbang.c \
- drivers/mcu/apm32/dshot_bitbang_ddl.c \
- drivers/mcu/apm32/eint_apm32.c \
- drivers/mcu/apm32/io_apm32.c \
- drivers/mcu/apm32/light_ws2811strip_apm32.c \
- drivers/mcu/apm32/persistent_apm32.c \
- drivers/mcu/apm32/pwm_output_apm32.c \
- drivers/mcu/apm32/pwm_output_dshot_apm32.c \
- drivers/mcu/apm32/rcm_apm32.c \
- drivers/mcu/apm32/serial_uart_apm32.c \
- drivers/mcu/apm32/timer_apm32.c \
- drivers/mcu/apm32/transponder_ir_io_apm32.c \
- drivers/mcu/apm32/timer_apm32f4xx.c \
- drivers/mcu/apm32/adc_apm32f4xx.c \
- drivers/mcu/apm32/dma_apm32f4xx.c \
- drivers/mcu/apm32/serial_uart_apm32f4xx.c \
- drivers/mcu/apm32/system_apm32f4xx.c
+ bus_spi_apm32.c \
+ bus_i2c_apm32.c \
+ bus_i2c_apm32_init.c \
+ camera_control_apm32.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dshot_bitbang.c \
+ dshot_bitbang_ddl.c \
+ eint_apm32.c \
+ io_apm32.c \
+ light_ws2811strip_apm32.c \
+ persistent_apm32.c \
+ pwm_output_apm32.c \
+ pwm_output_dshot_apm32.c \
+ rcm_apm32.c \
+ serial_uart_apm32.c \
+ timer_apm32.c \
+ transponder_ir_io_apm32.c \
+ timer_apm32f4xx.c \
+ adc_apm32f4xx.c \
+ dma_apm32f4xx.c \
+ serial_uart_apm32f4xx.c \
+ system_apm32f4xx.c
VCP_SRC = \
- drivers/mcu/apm32/usb/vcp/usbd_cdc_descriptor.c \
- drivers/mcu/apm32/usb/usbd_board_apm32f4.c \
- drivers/mcu/apm32/usb/vcp/usbd_cdc_vcp.c \
- drivers/mcu/apm32/usb/vcp/serial_usb_vcp.c \
+ usb/vcp/usbd_cdc_descriptor.c \
+ usb/usbd_board_apm32f4.c \
+ usb/vcp/usbd_cdc_vcp.c \
+ usb/vcp/serial_usb_vcp.c \
drivers/usb_io.c
MSC_SRC = \
drivers/usb_msc_common.c \
- drivers/mcu/apm32/usb/msc/usb_msc_apm32f4xx.c \
- drivers/mcu/apm32/usb/msc/usbd_memory.c \
- drivers/mcu/apm32/usb/msc/usbd_msc_descriptor.c \
+ usb/msc/usb_msc_apm32f4xx.c \
+ usb/msc/usbd_memory.c \
+ usb/msc/usbd_msc_descriptor.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
msc/emfat.c \
diff --git a/src/main/drivers/mcu/apm32/persistent_apm32.c b/src/platform/APM32/persistent_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/persistent_apm32.c
rename to src/platform/APM32/persistent_apm32.c
diff --git a/src/main/drivers/mcu/apm32/platform_mcu.h b/src/platform/APM32/platform_mcu.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/platform_mcu.h
rename to src/platform/APM32/platform_mcu.h
diff --git a/src/main/drivers/mcu/apm32/pwm_output_apm32.c b/src/platform/APM32/pwm_output_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/pwm_output_apm32.c
rename to src/platform/APM32/pwm_output_apm32.c
diff --git a/src/main/drivers/mcu/apm32/pwm_output_dshot_apm32.c b/src/platform/APM32/pwm_output_dshot_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/pwm_output_dshot_apm32.c
rename to src/platform/APM32/pwm_output_dshot_apm32.c
diff --git a/src/main/drivers/mcu/apm32/rcm_apm32.c b/src/platform/APM32/rcm_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/rcm_apm32.c
rename to src/platform/APM32/rcm_apm32.c
diff --git a/src/main/drivers/mcu/apm32/serial_uart_apm32.c b/src/platform/APM32/serial_uart_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/serial_uart_apm32.c
rename to src/platform/APM32/serial_uart_apm32.c
diff --git a/src/main/drivers/mcu/apm32/serial_uart_apm32f4xx.c b/src/platform/APM32/serial_uart_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/serial_uart_apm32f4xx.c
rename to src/platform/APM32/serial_uart_apm32f4xx.c
diff --git a/src/main/startup/apm32/apm32f4xx_dal_cfg.h b/src/platform/APM32/startup/apm32f4xx_dal_cfg.h
similarity index 100%
rename from src/main/startup/apm32/apm32f4xx_dal_cfg.h
rename to src/platform/APM32/startup/apm32f4xx_dal_cfg.h
diff --git a/src/main/startup/apm32/startup_apm32f405xx.S b/src/platform/APM32/startup/startup_apm32f405xx.S
similarity index 100%
rename from src/main/startup/apm32/startup_apm32f405xx.S
rename to src/platform/APM32/startup/startup_apm32f405xx.S
diff --git a/src/main/startup/apm32/startup_apm32f407xx.S b/src/platform/APM32/startup/startup_apm32f407xx.S
similarity index 100%
rename from src/main/startup/apm32/startup_apm32f407xx.S
rename to src/platform/APM32/startup/startup_apm32f407xx.S
diff --git a/src/main/startup/apm32/system_apm32f4xx.c b/src/platform/APM32/startup/system_apm32f4xx.c
similarity index 100%
rename from src/main/startup/apm32/system_apm32f4xx.c
rename to src/platform/APM32/startup/system_apm32f4xx.c
diff --git a/src/main/startup/apm32/system_apm32f4xx.h b/src/platform/APM32/startup/system_apm32f4xx.h
similarity index 100%
rename from src/main/startup/apm32/system_apm32f4xx.h
rename to src/platform/APM32/startup/system_apm32f4xx.h
diff --git a/src/main/drivers/mcu/apm32/system_apm32f4xx.c b/src/platform/APM32/system_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/system_apm32f4xx.c
rename to src/platform/APM32/system_apm32f4xx.c
diff --git a/src/main/target/APM32F405/target.h b/src/platform/APM32/target/APM32F405/target.h
similarity index 100%
rename from src/main/target/APM32F405/target.h
rename to src/platform/APM32/target/APM32F405/target.h
diff --git a/src/platform/APM32/target/APM32F405/target.mk b/src/platform/APM32/target/APM32F405/target.mk
new file mode 100644
index 0000000000..e79370e619
--- /dev/null
+++ b/src/platform/APM32/target/APM32F405/target.mk
@@ -0,0 +1,2 @@
+TARGET_MCU := APM32F405xx
+TARGET_MCU_FAMILY := APM32F4
diff --git a/src/main/target/APM32F407/target.h b/src/platform/APM32/target/APM32F407/target.h
similarity index 100%
rename from src/main/target/APM32F407/target.h
rename to src/platform/APM32/target/APM32F407/target.h
diff --git a/src/main/target/APM32F405/target.mk b/src/platform/APM32/target/APM32F407/target.mk
similarity index 100%
rename from src/main/target/APM32F405/target.mk
rename to src/platform/APM32/target/APM32F407/target.mk
diff --git a/src/main/drivers/mcu/apm32/timer_apm32.c b/src/platform/APM32/timer_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/timer_apm32.c
rename to src/platform/APM32/timer_apm32.c
diff --git a/src/main/drivers/mcu/apm32/timer_apm32f4xx.c b/src/platform/APM32/timer_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/timer_apm32f4xx.c
rename to src/platform/APM32/timer_apm32f4xx.c
diff --git a/src/main/drivers/mcu/apm32/timer_def.h b/src/platform/APM32/timer_def.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/timer_def.h
rename to src/platform/APM32/timer_def.h
diff --git a/src/main/drivers/mcu/apm32/transponder_ir_io_apm32.c b/src/platform/APM32/transponder_ir_io_apm32.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/transponder_ir_io_apm32.c
rename to src/platform/APM32/transponder_ir_io_apm32.c
diff --git a/src/main/drivers/mcu/apm32/usb/msc/usb_msc_apm32f4xx.c b/src/platform/APM32/usb/msc/usb_msc_apm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/msc/usb_msc_apm32f4xx.c
rename to src/platform/APM32/usb/msc/usb_msc_apm32f4xx.c
diff --git a/src/main/drivers/mcu/apm32/usb/msc/usbd_memory.c b/src/platform/APM32/usb/msc/usbd_memory.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/msc/usbd_memory.c
rename to src/platform/APM32/usb/msc/usbd_memory.c
diff --git a/src/main/drivers/mcu/apm32/usb/msc/usbd_memory.h b/src/platform/APM32/usb/msc/usbd_memory.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/msc/usbd_memory.h
rename to src/platform/APM32/usb/msc/usbd_memory.h
diff --git a/src/main/drivers/mcu/apm32/usb/msc/usbd_msc_descriptor.c b/src/platform/APM32/usb/msc/usbd_msc_descriptor.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/msc/usbd_msc_descriptor.c
rename to src/platform/APM32/usb/msc/usbd_msc_descriptor.c
diff --git a/src/main/drivers/mcu/apm32/usb/msc/usbd_msc_descriptor.h b/src/platform/APM32/usb/msc/usbd_msc_descriptor.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/msc/usbd_msc_descriptor.h
rename to src/platform/APM32/usb/msc/usbd_msc_descriptor.h
diff --git a/src/main/drivers/mcu/apm32/usb/usbd_board.h b/src/platform/APM32/usb/usbd_board.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/usbd_board.h
rename to src/platform/APM32/usb/usbd_board.h
diff --git a/src/main/drivers/mcu/apm32/usb/usbd_board_apm32f4.c b/src/platform/APM32/usb/usbd_board_apm32f4.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/usbd_board_apm32f4.c
rename to src/platform/APM32/usb/usbd_board_apm32f4.c
diff --git a/src/main/drivers/mcu/apm32/usb/vcp/serial_usb_vcp.c b/src/platform/APM32/usb/vcp/serial_usb_vcp.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/vcp/serial_usb_vcp.c
rename to src/platform/APM32/usb/vcp/serial_usb_vcp.c
diff --git a/src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_descriptor.c b/src/platform/APM32/usb/vcp/usbd_cdc_descriptor.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_descriptor.c
rename to src/platform/APM32/usb/vcp/usbd_cdc_descriptor.c
diff --git a/src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_descriptor.h b/src/platform/APM32/usb/vcp/usbd_cdc_descriptor.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_descriptor.h
rename to src/platform/APM32/usb/vcp/usbd_cdc_descriptor.h
diff --git a/src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_vcp.c b/src/platform/APM32/usb/vcp/usbd_cdc_vcp.c
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_vcp.c
rename to src/platform/APM32/usb/vcp/usbd_cdc_vcp.c
diff --git a/src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_vcp.h b/src/platform/APM32/usb/vcp/usbd_cdc_vcp.h
similarity index 100%
rename from src/main/drivers/mcu/apm32/usb/vcp/usbd_cdc_vcp.h
rename to src/platform/APM32/usb/vcp/usbd_cdc_vcp.h
diff --git a/src/main/drivers/mcu/at32/adc_at32f43x.c b/src/platform/AT32/adc_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/adc_at32f43x.c
rename to src/platform/AT32/adc_at32f43x.c
diff --git a/src/main/drivers/mcu/at32/bus_i2c_atbsp.c b/src/platform/AT32/bus_i2c_atbsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/bus_i2c_atbsp.c
rename to src/platform/AT32/bus_i2c_atbsp.c
diff --git a/src/main/drivers/mcu/at32/bus_i2c_atbsp_init.c b/src/platform/AT32/bus_i2c_atbsp_init.c
similarity index 100%
rename from src/main/drivers/mcu/at32/bus_i2c_atbsp_init.c
rename to src/platform/AT32/bus_i2c_atbsp_init.c
diff --git a/src/main/drivers/mcu/at32/bus_spi_at32bsp.c b/src/platform/AT32/bus_spi_at32bsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/bus_spi_at32bsp.c
rename to src/platform/AT32/bus_spi_at32bsp.c
diff --git a/src/platform/AT32/camera_control_at32.c b/src/platform/AT32/camera_control_at32.c
new file mode 100644
index 0000000000..12a69d18ca
--- /dev/null
+++ b/src/platform/AT32/camera_control_at32.c
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this software.
+ *
+ * If not, see .
+ */
+
+#include "platform.h"
+
+#ifdef USE_CAMERA_CONTROL
+
+#include
+
+#include "drivers/camera_control_impl.h"
+#include "drivers/nvic.h"
+#include "drivers/pwm_output.h"
+#include "drivers/rcc.h"
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+#include "build/atomic.h"
+#endif
+
+#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
+void cameraControlHardwarePwmInit(timerChannel_t *channel, const timerHardware_t *timerHardware, uint8_t inverted)
+{
+ pwmOutConfig(channel, timerHardware, timerClock(TMR6), CAMERA_CONTROL_PWM_RESOLUTION, 0, inverted);
+}
+#endif
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+void TIM6_DAC_IRQHandler(void)
+{
+ cameraControlHi();
+ tmr_flag_clear(TMR6, TMR_OVF_FLAG);
+}
+
+void TIM7_IRQHandler(void)
+{
+ cameraControlLo();
+ tmr_flag_clear(TMR7, TMR_OVF_FLAG);
+}
+
+void cameraControlSoftwarePwmInit(void)
+{
+ nvic_irq_enable(TMR6_DAC_GLOBAL_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
+ RCC_ClockCmd(RCC_APB1(TMR6), ENABLE);
+ tmr_div_value_set(TMR6, 0);
+
+ nvic_irq_enable(TMR7_GLOBAL_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER));
+ RCC_ClockCmd(RCC_APB1(TMR7), ENABLE);
+ tmr_div_value_set(TMR7, 0);
+}
+
+void cameraControlSoftwarePwmEnable(uint32_t hiTime, uint32_t period)
+{
+ tmr_counter_value_set(TMR6, hiTime);
+ tmr_period_value_set(TMR6, period);
+
+ tmr_counter_value_set(TMR7, 0);
+ tmr_period_value_set(TMR7, period);
+
+ ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
+ tmr_counter_enable(TMR6, TRUE);
+ tmr_counter_enable(TMR7, TRUE);
+ }
+
+ tmr_interrupt_enable(TMR6, TMR_OVF_INT, TRUE);
+ tmr_interrupt_enable(TMR7, TMR_OVF_INT, TRUE);
+}
+
+void cameraControlSoftwarePwmDisable(void)
+{
+ ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
+ tmr_counter_enable(TMR6, FALSE);
+ tmr_counter_enable(TMR7, FALSE);
+ }
+
+ tmr_interrupt_enable(TMR6, TMR_OVF_INT, FALSE);
+ tmr_interrupt_enable(TMR7, TMR_OVF_INT, FALSE);
+}
+#endif
+
+#endif // USE_CAMERA_CONTROL
diff --git a/src/main/drivers/mcu/at32/debug.c b/src/platform/AT32/debug.c
similarity index 100%
rename from src/main/drivers/mcu/at32/debug.c
rename to src/platform/AT32/debug.c
diff --git a/src/main/drivers/mcu/at32/dma_at32f43x.c b/src/platform/AT32/dma_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/dma_at32f43x.c
rename to src/platform/AT32/dma_at32f43x.c
diff --git a/src/main/drivers/mcu/at32/dma_atbsp.h b/src/platform/AT32/dma_atbsp.h
similarity index 100%
rename from src/main/drivers/mcu/at32/dma_atbsp.h
rename to src/platform/AT32/dma_atbsp.h
diff --git a/src/main/drivers/mcu/at32/dma_reqmap_mcu.c b/src/platform/AT32/dma_reqmap_mcu.c
similarity index 100%
rename from src/main/drivers/mcu/at32/dma_reqmap_mcu.c
rename to src/platform/AT32/dma_reqmap_mcu.c
diff --git a/src/main/drivers/mcu/at32/dma_reqmap_mcu.h b/src/platform/AT32/dma_reqmap_mcu.h
similarity index 100%
rename from src/main/drivers/mcu/at32/dma_reqmap_mcu.h
rename to src/platform/AT32/dma_reqmap_mcu.h
diff --git a/src/main/drivers/mcu/at32/dshot_bitbang.c b/src/platform/AT32/dshot_bitbang.c
similarity index 100%
rename from src/main/drivers/mcu/at32/dshot_bitbang.c
rename to src/platform/AT32/dshot_bitbang.c
diff --git a/src/main/drivers/mcu/at32/dshot_bitbang_stdperiph.c b/src/platform/AT32/dshot_bitbang_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/at32/dshot_bitbang_stdperiph.c
rename to src/platform/AT32/dshot_bitbang_stdperiph.c
diff --git a/src/main/drivers/mcu/at32/exti_at32.c b/src/platform/AT32/exti_at32.c
similarity index 100%
rename from src/main/drivers/mcu/at32/exti_at32.c
rename to src/platform/AT32/exti_at32.c
diff --git a/src/main/drivers/mcu/at32/io_at32.c b/src/platform/AT32/io_at32.c
similarity index 100%
rename from src/main/drivers/mcu/at32/io_at32.c
rename to src/platform/AT32/io_at32.c
diff --git a/src/main/drivers/mcu/at32/light_ws2811strip_at32f43x.c b/src/platform/AT32/light_ws2811strip_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/light_ws2811strip_at32f43x.c
rename to src/platform/AT32/light_ws2811strip_at32f43x.c
diff --git a/src/link/at32_flash_f43xg.ld b/src/platform/AT32/link/at32_flash_f43xg.ld
similarity index 100%
rename from src/link/at32_flash_f43xg.ld
rename to src/platform/AT32/link/at32_flash_f43xg.ld
diff --git a/src/link/at32_flash_f43xm.ld b/src/platform/AT32/link/at32_flash_f43xm.ld
similarity index 100%
rename from src/link/at32_flash_f43xm.ld
rename to src/platform/AT32/link/at32_flash_f43xm.ld
diff --git a/src/link/at32_flash_f4_split.ld b/src/platform/AT32/link/at32_flash_f4_split.ld
similarity index 100%
rename from src/link/at32_flash_f4_split.ld
rename to src/platform/AT32/link/at32_flash_f4_split.ld
diff --git a/mk/mcu/AT32F4.mk b/src/platform/AT32/mk/AT32F4.mk
similarity index 67%
rename from mk/mcu/AT32F4.mk
rename to src/platform/AT32/mk/AT32F4.mk
index bee1944644..6c6e142469 100644
--- a/mk/mcu/AT32F4.mk
+++ b/src/platform/AT32/mk/AT32F4.mk
@@ -45,7 +45,7 @@ STDPERIPH_SRC = \
usbd_class/msc/msc_class.c \
usbd_class/msc/msc_desc.c
-STARTUP_SRC = at32/startup_at32f435_437.s
+STARTUP_SRC = startup/startup_at32f435_437.s
VPATH := $(VPATH):$(ROOT)/lib/main/AT32F43x/cmsis/cm4/core_support:$(STDPERIPH_DIR)/src:$(MIDDLEWARES_DIR):$(SRC_DIR)/startup/at32
@@ -61,9 +61,8 @@ VCP_INCLUDES = \
DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC)
INCLUDE_DIRS := $(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/at32 \
- $(SRC_DIR)/drivers \
- $(SRC_DIR)/drivers/mcu/at32 \
+ $(TARGET_PLATFORM_DIR)/startup \
+ $(TARGET_PLATFORM_DIR) \
$(STDPERIPH_DIR)/inc \
$(CMSIS_DIR)/cm4/core_support \
$(CMSIS_DIR)/cm4 \
@@ -81,32 +80,32 @@ ARCH_FLAGS = -std=c99 -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=
DEVICE_FLAGS += -DUSE_ATBSP_DRIVER -DAT32F43x -DHSE_VALUE=$(HSE_VALUE) -DAT32 -DUSE_OTG_HOST_MODE
MCU_COMMON_SRC = \
- startup/at32/at32f435_437_clock.c \
- startup/at32/system_at32f435_437.c \
- drivers/mcu/at32/adc_at32f43x.c \
- drivers/mcu/at32/bus_i2c_atbsp.c \
- drivers/mcu/at32/bus_i2c_atbsp_init.c \
- drivers/mcu/at32/bus_spi_at32bsp.c \
- drivers/mcu/at32/camera_control.c \
- drivers/mcu/at32/debug.c \
- drivers/mcu/at32/dma_at32f43x.c \
- drivers/mcu/at32/dma_reqmap_mcu.c \
- drivers/mcu/at32/dshot_bitbang.c \
- drivers/mcu/at32/dshot_bitbang_stdperiph.c \
- drivers/mcu/at32/exti_at32.c \
- drivers/mcu/at32/io_at32.c \
- drivers/mcu/at32/light_ws2811strip_at32f43x.c \
- drivers/mcu/at32/persistent_at32bsp.c \
- drivers/mcu/at32/pwm_output_at32bsp.c \
- drivers/mcu/at32/pwm_output_dshot.c \
- drivers/mcu/at32/rcc_at32.c \
- drivers/mcu/at32/serial_uart_at32bsp.c \
- drivers/mcu/at32/serial_uart_at32f43x.c \
- drivers/mcu/at32/serial_usb_vcp_at32f4.c \
- drivers/mcu/at32/system_at32f43x.c \
- drivers/mcu/at32/timer_at32bsp.c \
- drivers/mcu/at32/timer_at32f43x.c \
- drivers/mcu/at32/usb_msc_at32f43x.c \
+ startup/at32f435_437_clock.c \
+ startup/system_at32f435_437.c \
+ adc_at32f43x.c \
+ bus_i2c_atbsp.c \
+ bus_i2c_atbsp_init.c \
+ bus_spi_at32bsp.c \
+ camera_control_at32.c \
+ debug.c \
+ dma_at32f43x.c \
+ dma_reqmap_mcu.c \
+ dshot_bitbang.c \
+ dshot_bitbang_stdperiph.c \
+ exti_at32.c \
+ io_at32.c \
+ light_ws2811strip_at32f43x.c \
+ persistent_at32bsp.c \
+ pwm_output_at32bsp.c \
+ pwm_output_dshot.c \
+ rcc_at32.c \
+ serial_uart_at32bsp.c \
+ serial_uart_at32f43x.c \
+ serial_usb_vcp_at32f4.c \
+ system_at32f43x.c \
+ timer_at32bsp.c \
+ timer_at32f43x.c \
+ usb_msc_at32f43x.c \
drivers/accgyro/accgyro_mpu.c \
drivers/dshot_bitbang_decode.c \
drivers/inverter.c \
diff --git a/src/main/drivers/mcu/at32/msc_desc.h b/src/platform/AT32/msc_desc.h
similarity index 100%
rename from src/main/drivers/mcu/at32/msc_desc.h
rename to src/platform/AT32/msc_desc.h
diff --git a/src/main/drivers/mcu/at32/msc_diskio.h b/src/platform/AT32/msc_diskio.h
similarity index 100%
rename from src/main/drivers/mcu/at32/msc_diskio.h
rename to src/platform/AT32/msc_diskio.h
diff --git a/src/main/drivers/mcu/at32/persistent_at32bsp.c b/src/platform/AT32/persistent_at32bsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/persistent_at32bsp.c
rename to src/platform/AT32/persistent_at32bsp.c
diff --git a/src/main/drivers/mcu/at32/platform_mcu.h b/src/platform/AT32/platform_mcu.h
similarity index 100%
rename from src/main/drivers/mcu/at32/platform_mcu.h
rename to src/platform/AT32/platform_mcu.h
diff --git a/src/main/drivers/mcu/at32/pwm_output_at32bsp.c b/src/platform/AT32/pwm_output_at32bsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/pwm_output_at32bsp.c
rename to src/platform/AT32/pwm_output_at32bsp.c
diff --git a/src/main/drivers/mcu/at32/pwm_output_dshot.c b/src/platform/AT32/pwm_output_dshot.c
similarity index 100%
rename from src/main/drivers/mcu/at32/pwm_output_dshot.c
rename to src/platform/AT32/pwm_output_dshot.c
diff --git a/src/main/drivers/mcu/at32/rcc_at32.c b/src/platform/AT32/rcc_at32.c
similarity index 100%
rename from src/main/drivers/mcu/at32/rcc_at32.c
rename to src/platform/AT32/rcc_at32.c
diff --git a/src/main/drivers/mcu/at32/serial_uart_at32bsp.c b/src/platform/AT32/serial_uart_at32bsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/serial_uart_at32bsp.c
rename to src/platform/AT32/serial_uart_at32bsp.c
diff --git a/src/main/drivers/mcu/at32/serial_uart_at32f43x.c b/src/platform/AT32/serial_uart_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/serial_uart_at32f43x.c
rename to src/platform/AT32/serial_uart_at32f43x.c
diff --git a/src/main/drivers/mcu/at32/serial_usb_vcp_at32f4.c b/src/platform/AT32/serial_usb_vcp_at32f4.c
similarity index 100%
rename from src/main/drivers/mcu/at32/serial_usb_vcp_at32f4.c
rename to src/platform/AT32/serial_usb_vcp_at32f4.c
diff --git a/src/main/startup/at32/at32f435_437.h b/src/platform/AT32/startup/at32f435_437.h
similarity index 100%
rename from src/main/startup/at32/at32f435_437.h
rename to src/platform/AT32/startup/at32f435_437.h
diff --git a/src/main/startup/at32/at32f435_437_clock.c b/src/platform/AT32/startup/at32f435_437_clock.c
similarity index 100%
rename from src/main/startup/at32/at32f435_437_clock.c
rename to src/platform/AT32/startup/at32f435_437_clock.c
diff --git a/src/main/startup/at32/at32f435_437_clock.h b/src/platform/AT32/startup/at32f435_437_clock.h
similarity index 100%
rename from src/main/startup/at32/at32f435_437_clock.h
rename to src/platform/AT32/startup/at32f435_437_clock.h
diff --git a/src/main/startup/at32/at32f435_437_conf.h b/src/platform/AT32/startup/at32f435_437_conf.h
similarity index 100%
rename from src/main/startup/at32/at32f435_437_conf.h
rename to src/platform/AT32/startup/at32f435_437_conf.h
diff --git a/src/main/startup/at32/startup_at32f435_437.s b/src/platform/AT32/startup/startup_at32f435_437.s
similarity index 100%
rename from src/main/startup/at32/startup_at32f435_437.s
rename to src/platform/AT32/startup/startup_at32f435_437.s
diff --git a/src/main/startup/at32/system_at32f435_437.c b/src/platform/AT32/startup/system_at32f435_437.c
similarity index 100%
rename from src/main/startup/at32/system_at32f435_437.c
rename to src/platform/AT32/startup/system_at32f435_437.c
diff --git a/src/main/startup/at32/system_at32f435_437.h b/src/platform/AT32/startup/system_at32f435_437.h
similarity index 100%
rename from src/main/startup/at32/system_at32f435_437.h
rename to src/platform/AT32/startup/system_at32f435_437.h
diff --git a/src/main/drivers/mcu/at32/system_at32f43x.c b/src/platform/AT32/system_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/system_at32f43x.c
rename to src/platform/AT32/system_at32f43x.c
diff --git a/src/main/target/AT32F435G/target.h b/src/platform/AT32/target/AT32F435G/target.h
similarity index 100%
rename from src/main/target/AT32F435G/target.h
rename to src/platform/AT32/target/AT32F435G/target.h
diff --git a/src/main/target/AT32F435G/target.mk b/src/platform/AT32/target/AT32F435G/target.mk
similarity index 100%
rename from src/main/target/AT32F435G/target.mk
rename to src/platform/AT32/target/AT32F435G/target.mk
diff --git a/src/main/target/AT32F435M/target.h b/src/platform/AT32/target/AT32F435M/target.h
similarity index 100%
rename from src/main/target/AT32F435M/target.h
rename to src/platform/AT32/target/AT32F435M/target.h
diff --git a/src/main/target/AT32F435M/target.mk b/src/platform/AT32/target/AT32F435M/target.mk
similarity index 100%
rename from src/main/target/AT32F435M/target.mk
rename to src/platform/AT32/target/AT32F435M/target.mk
diff --git a/src/main/drivers/mcu/at32/timer_at32bsp.c b/src/platform/AT32/timer_at32bsp.c
similarity index 100%
rename from src/main/drivers/mcu/at32/timer_at32bsp.c
rename to src/platform/AT32/timer_at32bsp.c
diff --git a/src/main/drivers/mcu/at32/timer_at32f43x.c b/src/platform/AT32/timer_at32f43x.c
similarity index 100%
rename from src/main/drivers/mcu/at32/timer_at32f43x.c
rename to src/platform/AT32/timer_at32f43x.c
diff --git a/src/main/drivers/mcu/at32/timer_def.h b/src/platform/AT32/timer_def.h
similarity index 100%
rename from src/main/drivers/mcu/at32/timer_def.h
rename to src/platform/AT32/timer_def.h
diff --git a/src/main/drivers/mcu/at32/usb_conf.h b/src/platform/AT32/usb_conf.h
similarity index 100%
rename from src/main/drivers/mcu/at32/usb_conf.h
rename to src/platform/AT32/usb_conf.h
diff --git a/src/main/drivers/mcu/at32/usb_msc_at32f43x.c b/src/platform/AT32/usb_msc_at32f43x.c
similarity index 99%
rename from src/main/drivers/mcu/at32/usb_msc_at32f43x.c
rename to src/platform/AT32/usb_msc_at32f43x.c
index e4ee3d24d0..6a06dd8c16 100644
--- a/src/main/drivers/mcu/at32/usb_msc_at32f43x.c
+++ b/src/platform/AT32/usb_msc_at32f43x.c
@@ -55,7 +55,7 @@
#include "msc_class.h"
#include "msc_desc.h"
-#include "usb_io.h"
+#include "drivers/usb_io.h"
extern otg_core_type otg_core_struct;
diff --git a/src/main/drivers/mcu/at32/usbd_msc_mem.h b/src/platform/AT32/usbd_msc_mem.h
similarity index 100%
rename from src/main/drivers/mcu/at32/usbd_msc_mem.h
rename to src/platform/AT32/usbd_msc_mem.h
diff --git a/src/main/target/SITL/dma_reqmap_mcu.h b/src/platform/SITL/dma_reqmap_mcu.h
similarity index 100%
rename from src/main/target/SITL/dma_reqmap_mcu.h
rename to src/platform/SITL/dma_reqmap_mcu.h
diff --git a/src/main/target/SITL/pg.ld b/src/platform/SITL/link/sitl.ld
similarity index 100%
rename from src/main/target/SITL/pg.ld
rename to src/platform/SITL/link/sitl.ld
diff --git a/mk/mcu/SITL.mk b/src/platform/SITL/mk/SITL.mk
similarity index 89%
rename from mk/mcu/SITL.mk
rename to src/platform/SITL/mk/SITL.mk
index c8dcd76f33..b922ac6faa 100644
--- a/mk/mcu/SITL.mk
+++ b/src/platform/SITL/mk/SITL.mk
@@ -1,13 +1,16 @@
INCLUDE_DIRS := $(INCLUDE_DIRS) \
+ $(TARGET_PLATFORM_DIR) \
$(ROOT)/lib/main/dyad
-MCU_COMMON_SRC := $(ROOT)/lib/main/dyad/dyad.c
+MCU_COMMON_SRC := $(ROOT)/lib/main/dyad/dyad.c \
+ sitl.c \
+ udplink.c
#Flags
ARCH_FLAGS =
DEVICE_FLAGS =
-LD_SCRIPT = src/main/target/SITL/pg.ld
+LD_SCRIPT = $(LINKER_DIR)/sitl.ld
STARTUP_SRC =
MCU_FLASH_SIZE := 2048
diff --git a/src/main/target/SITL/platform_mcu.h b/src/platform/SITL/platform_mcu.h
similarity index 100%
rename from src/main/target/SITL/platform_mcu.h
rename to src/platform/SITL/platform_mcu.h
diff --git a/src/main/target/SITL/sitl.c b/src/platform/SITL/sitl.c
similarity index 99%
rename from src/main/target/SITL/sitl.c
rename to src/platform/SITL/sitl.c
index 7688d49fde..c8ac5a9784 100644
--- a/src/main/target/SITL/sitl.c
+++ b/src/platform/SITL/sitl.c
@@ -56,7 +56,7 @@
#include "rx/rx.h"
#include "dyad.h"
-#include "target/SITL/udplink.h"
+#include "udplink.h"
uint32_t SystemCoreClock;
diff --git a/src/main/target/SITL/README.md b/src/platform/SITL/target/SITL/README.md
similarity index 95%
rename from src/main/target/SITL/README.md
rename to src/platform/SITL/target/SITL/README.md
index 37c0e4821b..42023c61f2 100644
--- a/src/main/target/SITL/README.md
+++ b/src/platform/SITL/target/SITL/README.md
@@ -44,4 +44,4 @@ gazebo -> betaflight `udp://127.0.0.1:9003`
UARTx will bind on `tcp://127.0.0.1:576x` when port been open.
`eeprom.bin`, size 8192 Byte, is for config saving.
-size can be changed in `src/main/target/SITL/pg.ld` >> `__FLASH_CONFIG_Size`
+size can be changed in `src/platform/SITL/link/SITL.ld` >> `__FLASH_CONFIG_Size`
diff --git a/src/main/target/SITL/target.h b/src/platform/SITL/target/SITL/target.h
similarity index 100%
rename from src/main/target/SITL/target.h
rename to src/platform/SITL/target/SITL/target.h
diff --git a/src/main/target/SITL/target.mk b/src/platform/SITL/target/SITL/target.mk
similarity index 100%
rename from src/main/target/SITL/target.mk
rename to src/platform/SITL/target/SITL/target.mk
diff --git a/src/main/target/SITL/timer_def.h b/src/platform/SITL/timer_def.h
similarity index 100%
rename from src/main/target/SITL/timer_def.h
rename to src/platform/SITL/timer_def.h
diff --git a/src/main/target/SITL/udplink.c b/src/platform/SITL/udplink.c
similarity index 100%
rename from src/main/target/SITL/udplink.c
rename to src/platform/SITL/udplink.c
diff --git a/src/main/target/SITL/udplink.h b/src/platform/SITL/udplink.h
similarity index 100%
rename from src/main/target/SITL/udplink.h
rename to src/platform/SITL/udplink.h
diff --git a/src/main/drivers/mcu/stm32/adc_stm32f4xx.c b/src/platform/STM32/adc_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/adc_stm32f4xx.c
rename to src/platform/STM32/adc_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/adc_stm32f7xx.c b/src/platform/STM32/adc_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/adc_stm32f7xx.c
rename to src/platform/STM32/adc_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/adc_stm32g4xx.c b/src/platform/STM32/adc_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/adc_stm32g4xx.c
rename to src/platform/STM32/adc_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/adc_stm32h7xx.c b/src/platform/STM32/adc_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/adc_stm32h7xx.c
rename to src/platform/STM32/adc_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/audio_stm32f7xx.c b/src/platform/STM32/audio_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/audio_stm32f7xx.c
rename to src/platform/STM32/audio_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/audio_stm32h7xx.c b/src/platform/STM32/audio_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/audio_stm32h7xx.c
rename to src/platform/STM32/audio_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/bus_i2c_hal.c b/src/platform/STM32/bus_i2c_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_i2c_hal.c
rename to src/platform/STM32/bus_i2c_hal.c
diff --git a/src/main/drivers/mcu/stm32/bus_i2c_hal_init.c b/src/platform/STM32/bus_i2c_hal_init.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_i2c_hal_init.c
rename to src/platform/STM32/bus_i2c_hal_init.c
diff --git a/src/main/drivers/mcu/stm32/bus_i2c_stm32f4xx.c b/src/platform/STM32/bus_i2c_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_i2c_stm32f4xx.c
rename to src/platform/STM32/bus_i2c_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/bus_octospi_stm32h7xx.c b/src/platform/STM32/bus_octospi_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_octospi_stm32h7xx.c
rename to src/platform/STM32/bus_octospi_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/bus_quadspi_hal.c b/src/platform/STM32/bus_quadspi_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_quadspi_hal.c
rename to src/platform/STM32/bus_quadspi_hal.c
diff --git a/src/main/drivers/mcu/stm32/bus_spi_ll.c b/src/platform/STM32/bus_spi_ll.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_spi_ll.c
rename to src/platform/STM32/bus_spi_ll.c
diff --git a/src/main/drivers/mcu/stm32/bus_spi_stdperiph.c b/src/platform/STM32/bus_spi_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/bus_spi_stdperiph.c
rename to src/platform/STM32/bus_spi_stdperiph.c
diff --git a/src/platform/STM32/camera_control_stm32.c b/src/platform/STM32/camera_control_stm32.c
new file mode 100644
index 0000000000..b32173747b
--- /dev/null
+++ b/src/platform/STM32/camera_control_stm32.c
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this software.
+ *
+ * If not, see .
+ */
+
+#include "platform.h"
+
+#ifdef USE_CAMERA_CONTROL
+
+#include
+
+#include "drivers/camera_control_impl.h"
+#include "drivers/nvic.h"
+#include "drivers/pwm_output.h"
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+#include "build/atomic.h"
+#endif
+
+#ifdef CAMERA_CONTROL_HARDWARE_PWM_AVAILABLE
+void cameraControlHardwarePwmInit(timerChannel_t *channel, const timerHardware_t *timerHardware, uint8_t inverted)
+{
+ pwmOutConfig(channel, timerHardware, timerClock(TIM6), CAMERA_CONTROL_PWM_RESOLUTION, 0, inverted);
+}
+#endif
+
+#ifdef CAMERA_CONTROL_SOFTWARE_PWM_AVAILABLE
+void TIM6_DAC_IRQHandler(void)
+{
+ cameraControlHi();
+ TIM6->SR = 0;
+}
+
+void TIM7_IRQHandler(void)
+{
+ cameraControlLo();
+ TIM7->SR = 0;
+}
+
+void cameraControlSoftwarePwmInit(void)
+{
+ NVIC_InitTypeDef nvicTIM6 = {
+ TIM6_DAC_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER), ENABLE
+ };
+ NVIC_Init(&nvicTIM6);
+
+ NVIC_InitTypeDef nvicTIM7 = {
+ TIM7_IRQn, NVIC_PRIORITY_BASE(NVIC_PRIO_TIMER), NVIC_PRIORITY_SUB(NVIC_PRIO_TIMER), ENABLE
+ };
+ NVIC_Init(&nvicTIM7);
+
+ RCC->APB1ENR |= RCC_APB1Periph_TIM6 | RCC_APB1Periph_TIM7;
+ TIM6->PSC = 0;
+ TIM7->PSC = 0;
+}
+
+void cameraControlSoftwarePwmEnable(uint32_t hiTime, uint32_t period)
+{
+ TIM6->CNT = hiTime;
+ TIM6->ARR = period;
+
+ TIM7->CNT = 0;
+ TIM7->ARR = period;
+
+ // Start two timers as simultaneously as possible
+ ATOMIC_BLOCK(NVIC_PRIO_TIMER) {
+ TIM6->CR1 = TIM_CR1_CEN;
+ TIM7->CR1 = TIM_CR1_CEN;
+ }
+
+ // Enable interrupt generation
+ TIM6->DIER = TIM_IT_Update;
+ TIM7->DIER = TIM_IT_Update;
+}
+
+void cameraControlSoftwarePwmDisable(void)
+{
+ TIM6->CR1 &= ~TIM_CR1_CEN;
+ TIM7->CR1 &= ~TIM_CR1_CEN;
+ TIM6->DIER = 0;
+ TIM7->DIER = 0;
+}
+#endif
+
+#endif // USE_CAMERA_CONTROL
diff --git a/src/main/drivers/mcu/stm32/debug.c b/src/platform/STM32/debug.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/debug.c
rename to src/platform/STM32/debug.c
diff --git a/src/main/drivers/mcu/stm32/dma_reqmap_mcu.c b/src/platform/STM32/dma_reqmap_mcu.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_reqmap_mcu.c
rename to src/platform/STM32/dma_reqmap_mcu.c
diff --git a/src/main/drivers/mcu/stm32/dma_reqmap_mcu.h b/src/platform/STM32/dma_reqmap_mcu.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_reqmap_mcu.h
rename to src/platform/STM32/dma_reqmap_mcu.h
diff --git a/src/main/drivers/mcu/stm32/dma_stm32f4xx.c b/src/platform/STM32/dma_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_stm32f4xx.c
rename to src/platform/STM32/dma_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/dma_stm32f7xx.c b/src/platform/STM32/dma_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_stm32f7xx.c
rename to src/platform/STM32/dma_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/dma_stm32g4xx.c b/src/platform/STM32/dma_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_stm32g4xx.c
rename to src/platform/STM32/dma_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/dma_stm32h7xx.c b/src/platform/STM32/dma_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dma_stm32h7xx.c
rename to src/platform/STM32/dma_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/dshot_bitbang.c b/src/platform/STM32/dshot_bitbang.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dshot_bitbang.c
rename to src/platform/STM32/dshot_bitbang.c
diff --git a/src/main/drivers/mcu/stm32/dshot_bitbang_ll.c b/src/platform/STM32/dshot_bitbang_ll.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dshot_bitbang_ll.c
rename to src/platform/STM32/dshot_bitbang_ll.c
diff --git a/src/main/drivers/mcu/stm32/dshot_bitbang_stdperiph.c b/src/platform/STM32/dshot_bitbang_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/dshot_bitbang_stdperiph.c
rename to src/platform/STM32/dshot_bitbang_stdperiph.c
diff --git a/src/main/drivers/mcu/stm32/exti.c b/src/platform/STM32/exti.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/exti.c
rename to src/platform/STM32/exti.c
diff --git a/src/main/drivers/mcu/stm32/io_stm32.c b/src/platform/STM32/io_stm32.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/io_stm32.c
rename to src/platform/STM32/io_stm32.c
diff --git a/src/main/drivers/mcu/stm32/light_ws2811strip_hal.c b/src/platform/STM32/light_ws2811strip_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/light_ws2811strip_hal.c
rename to src/platform/STM32/light_ws2811strip_hal.c
diff --git a/src/main/drivers/mcu/stm32/light_ws2811strip_stdperiph.c b/src/platform/STM32/light_ws2811strip_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/light_ws2811strip_stdperiph.c
rename to src/platform/STM32/light_ws2811strip_stdperiph.c
diff --git a/src/link/stm32_flash.ld b/src/platform/STM32/link/stm32_flash.ld
similarity index 100%
rename from src/link/stm32_flash.ld
rename to src/platform/STM32/link/stm32_flash.ld
diff --git a/src/link/stm32_flash_f405.ld b/src/platform/STM32/link/stm32_flash_f405.ld
similarity index 100%
rename from src/link/stm32_flash_f405.ld
rename to src/platform/STM32/link/stm32_flash_f405.ld
diff --git a/src/link/stm32_flash_f411.ld b/src/platform/STM32/link/stm32_flash_f411.ld
similarity index 100%
rename from src/link/stm32_flash_f411.ld
rename to src/platform/STM32/link/stm32_flash_f411.ld
diff --git a/src/link/stm32_flash_f446.ld b/src/platform/STM32/link/stm32_flash_f446.ld
similarity index 100%
rename from src/link/stm32_flash_f446.ld
rename to src/platform/STM32/link/stm32_flash_f446.ld
diff --git a/src/link/stm32_flash_f4_split.ld b/src/platform/STM32/link/stm32_flash_f4_split.ld
similarity index 100%
rename from src/link/stm32_flash_f4_split.ld
rename to src/platform/STM32/link/stm32_flash_f4_split.ld
diff --git a/src/link/stm32_flash_f722.ld b/src/platform/STM32/link/stm32_flash_f722.ld
similarity index 100%
rename from src/link/stm32_flash_f722.ld
rename to src/platform/STM32/link/stm32_flash_f722.ld
diff --git a/src/link/stm32_flash_f74x.ld b/src/platform/STM32/link/stm32_flash_f74x.ld
similarity index 100%
rename from src/link/stm32_flash_f74x.ld
rename to src/platform/STM32/link/stm32_flash_f74x.ld
diff --git a/src/link/stm32_flash_f765.ld b/src/platform/STM32/link/stm32_flash_f765.ld
similarity index 100%
rename from src/link/stm32_flash_f765.ld
rename to src/platform/STM32/link/stm32_flash_f765.ld
diff --git a/src/link/stm32_flash_f7_split.ld b/src/platform/STM32/link/stm32_flash_f7_split.ld
similarity index 100%
rename from src/link/stm32_flash_f7_split.ld
rename to src/platform/STM32/link/stm32_flash_f7_split.ld
diff --git a/src/link/stm32_flash_g474.ld b/src/platform/STM32/link/stm32_flash_g474.ld
similarity index 100%
rename from src/link/stm32_flash_g474.ld
rename to src/platform/STM32/link/stm32_flash_g474.ld
diff --git a/src/link/stm32_flash_g4_split.ld b/src/platform/STM32/link/stm32_flash_g4_split.ld
similarity index 100%
rename from src/link/stm32_flash_g4_split.ld
rename to src/platform/STM32/link/stm32_flash_g4_split.ld
diff --git a/src/link/stm32_flash_h563_2m.ld b/src/platform/STM32/link/stm32_flash_h563_2m.ld
similarity index 100%
rename from src/link/stm32_flash_h563_2m.ld
rename to src/platform/STM32/link/stm32_flash_h563_2m.ld
diff --git a/src/link/stm32_flash_h723_1m.ld b/src/platform/STM32/link/stm32_flash_h723_1m.ld
similarity index 100%
rename from src/link/stm32_flash_h723_1m.ld
rename to src/platform/STM32/link/stm32_flash_h723_1m.ld
diff --git a/src/link/stm32_flash_h743_2m.ld b/src/platform/STM32/link/stm32_flash_h743_2m.ld
similarity index 100%
rename from src/link/stm32_flash_h743_2m.ld
rename to src/platform/STM32/link/stm32_flash_h743_2m.ld
diff --git a/src/link/stm32_flash_h750_128k.ld b/src/platform/STM32/link/stm32_flash_h750_128k.ld
similarity index 100%
rename from src/link/stm32_flash_h750_128k.ld
rename to src/platform/STM32/link/stm32_flash_h750_128k.ld
diff --git a/src/link/stm32_flash_h750_1m.ld b/src/platform/STM32/link/stm32_flash_h750_1m.ld
similarity index 100%
rename from src/link/stm32_flash_h750_1m.ld
rename to src/platform/STM32/link/stm32_flash_h750_1m.ld
diff --git a/src/link/stm32_flash_h7a3_2m.ld b/src/platform/STM32/link/stm32_flash_h7a3_2m.ld
similarity index 100%
rename from src/link/stm32_flash_h7a3_2m.ld
rename to src/platform/STM32/link/stm32_flash_h7a3_2m.ld
diff --git a/src/link/stm32_h723_common.ld b/src/platform/STM32/link/stm32_h723_common.ld
similarity index 100%
rename from src/link/stm32_h723_common.ld
rename to src/platform/STM32/link/stm32_h723_common.ld
diff --git a/src/link/stm32_h723_common_post.ld b/src/platform/STM32/link/stm32_h723_common_post.ld
similarity index 100%
rename from src/link/stm32_h723_common_post.ld
rename to src/platform/STM32/link/stm32_h723_common_post.ld
diff --git a/src/link/stm32_h730_common.ld b/src/platform/STM32/link/stm32_h730_common.ld
similarity index 100%
rename from src/link/stm32_h730_common.ld
rename to src/platform/STM32/link/stm32_h730_common.ld
diff --git a/src/link/stm32_h730_common_post.ld b/src/platform/STM32/link/stm32_h730_common_post.ld
similarity index 100%
rename from src/link/stm32_h730_common_post.ld
rename to src/platform/STM32/link/stm32_h730_common_post.ld
diff --git a/src/link/stm32_h750_common.ld b/src/platform/STM32/link/stm32_h750_common.ld
similarity index 100%
rename from src/link/stm32_h750_common.ld
rename to src/platform/STM32/link/stm32_h750_common.ld
diff --git a/src/link/stm32_h750_common_post.ld b/src/platform/STM32/link/stm32_h750_common_post.ld
similarity index 100%
rename from src/link/stm32_h750_common_post.ld
rename to src/platform/STM32/link/stm32_h750_common_post.ld
diff --git a/src/link/stm32_ram_h723_exst.ld b/src/platform/STM32/link/stm32_ram_h723_exst.ld
similarity index 100%
rename from src/link/stm32_ram_h723_exst.ld
rename to src/platform/STM32/link/stm32_ram_h723_exst.ld
diff --git a/src/link/stm32_ram_h723_exst_post.ld b/src/platform/STM32/link/stm32_ram_h723_exst_post.ld
similarity index 100%
rename from src/link/stm32_ram_h723_exst_post.ld
rename to src/platform/STM32/link/stm32_ram_h723_exst_post.ld
diff --git a/src/link/stm32_ram_h730_exst.ld b/src/platform/STM32/link/stm32_ram_h730_exst.ld
similarity index 100%
rename from src/link/stm32_ram_h730_exst.ld
rename to src/platform/STM32/link/stm32_ram_h730_exst.ld
diff --git a/src/link/stm32_ram_h730_exst_post.ld b/src/platform/STM32/link/stm32_ram_h730_exst_post.ld
similarity index 100%
rename from src/link/stm32_ram_h730_exst_post.ld
rename to src/platform/STM32/link/stm32_ram_h730_exst_post.ld
diff --git a/src/link/stm32_ram_h743.ld b/src/platform/STM32/link/stm32_ram_h743.ld
similarity index 100%
rename from src/link/stm32_ram_h743.ld
rename to src/platform/STM32/link/stm32_ram_h743.ld
diff --git a/src/link/stm32_ram_h750_exst.ld b/src/platform/STM32/link/stm32_ram_h750_exst.ld
similarity index 100%
rename from src/link/stm32_ram_h750_exst.ld
rename to src/platform/STM32/link/stm32_ram_h750_exst.ld
diff --git a/src/link/stm32_ram_h750_exst_post.ld b/src/platform/STM32/link/stm32_ram_h750_exst_post.ld
similarity index 100%
rename from src/link/stm32_ram_h750_exst_post.ld
rename to src/platform/STM32/link/stm32_ram_h750_exst_post.ld
diff --git a/src/main/drivers/mcu/stm32/memprot_hal.c b/src/platform/STM32/memprot_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/memprot_hal.c
rename to src/platform/STM32/memprot_hal.c
diff --git a/src/main/drivers/mcu/stm32/memprot_stm32g4xx.c b/src/platform/STM32/memprot_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/memprot_stm32g4xx.c
rename to src/platform/STM32/memprot_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/memprot_stm32h7xx.c b/src/platform/STM32/memprot_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/memprot_stm32h7xx.c
rename to src/platform/STM32/memprot_stm32h7xx.c
diff --git a/mk/mcu/STM32F4.mk b/src/platform/STM32/mk/STM32F4.mk
similarity index 73%
rename from mk/mcu/STM32F4.mk
rename to src/platform/STM32/mk/STM32F4.mk
index 1ed16fcea0..35af80f959 100644
--- a/mk/mcu/STM32F4.mk
+++ b/src/platform/STM32/mk/STM32F4.mk
@@ -117,12 +117,14 @@ ifeq ($(PERIPH_DRIVER), HAL)
CMSIS_SRC :=
INCLUDE_DIRS := \
$(INCLUDE_DIRS) \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/Inc \
$(USBCORE_DIR)/Inc \
$(USBCDC_DIR)/Inc \
$(CMSIS_DIR)/Include \
$(CMSIS_DIR)/Device/ST/STM32F4xx/Include \
- $(SRC_DIR)/drivers/mcu/stm32/vcp_hal
+ $(TARGET_PLATFORM_DIR)/vcp_hal
else
CMSIS_SRC := \
stm32f4xx_gpio.c \
@@ -130,6 +132,8 @@ CMSIS_SRC := \
INCLUDE_DIRS := \
$(INCLUDE_DIRS) \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/inc \
$(USBOTG_DIR)/inc \
$(USBCORE_DIR)/inc \
@@ -139,7 +143,7 @@ INCLUDE_DIRS := \
$(USBMSC_DIR)/inc \
$(CMSIS_DIR)/Core/Include \
$(ROOT)/lib/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx \
- $(SRC_DIR)/drivers/mcu/stm32/vcpf4
+ $(TARGET_PLATFORM_DIR)/vcpf4
endif
#Flags
@@ -148,19 +152,19 @@ ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu
ifeq ($(TARGET_MCU),STM32F411xE)
DEVICE_FLAGS = -DSTM32F411xE -finline-limit=20
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411.ld
-STARTUP_SRC = stm32/startup_stm32f411xe.s
+STARTUP_SRC = startup/startup_stm32f411xe.s
MCU_FLASH_SIZE := 512
else ifeq ($(TARGET_MCU),STM32F405xx)
DEVICE_FLAGS = -DSTM32F40_41xxx -DSTM32F405xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld
-STARTUP_SRC = stm32/startup_stm32f40xx.s
+STARTUP_SRC = startup/startup_stm32f40xx.s
MCU_FLASH_SIZE := 1024
else ifeq ($(TARGET_MCU),STM32F446xx)
DEVICE_FLAGS = -DSTM32F446xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f446.ld
-STARTUP_SRC = stm32/startup_stm32f446xx.s
+STARTUP_SRC = startup/startup_stm32f446xx.s
MCU_FLASH_SIZE := 512
else
@@ -173,54 +177,54 @@ MCU_COMMON_SRC = \
drivers/dshot_bitbang_decode.c \
drivers/inverter.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/stm32/pwm_output_dshot.c \
- drivers/mcu/stm32/adc_stm32f4xx.c \
- drivers/mcu/stm32/bus_i2c_stm32f4xx.c \
- drivers/mcu/stm32/bus_spi_stdperiph.c \
- drivers/mcu/stm32/debug.c \
- drivers/mcu/stm32/dma_reqmap_mcu.c \
- drivers/mcu/stm32/dma_stm32f4xx.c \
- drivers/mcu/stm32/dshot_bitbang.c \
- drivers/mcu/stm32/dshot_bitbang_stdperiph.c \
- drivers/mcu/stm32/exti.c \
- drivers/mcu/stm32/io_stm32.c \
- drivers/mcu/stm32/light_ws2811strip_stdperiph.c \
- drivers/mcu/stm32/persistent.c \
- drivers/mcu/stm32/pwm_output.c \
- drivers/mcu/stm32/rcc_stm32.c \
- drivers/mcu/stm32/sdio_f4xx.c \
- drivers/mcu/stm32/serial_uart_stdperiph.c \
- drivers/mcu/stm32/serial_uart_stm32f4xx.c \
- drivers/mcu/stm32/system_stm32f4xx.c \
- drivers/mcu/stm32/timer_stdperiph.c \
- drivers/mcu/stm32/timer_stm32f4xx.c \
- drivers/mcu/stm32/transponder_ir_io_stdperiph.c \
- drivers/mcu/stm32/usbd_msc_desc.c \
- drivers/mcu/stm32/camera_control.c \
- startup/stm32/system_stm32f4xx.c
+ pwm_output_dshot.c \
+ adc_stm32f4xx.c \
+ bus_i2c_stm32f4xx.c \
+ bus_spi_stdperiph.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dma_stm32f4xx.c \
+ dshot_bitbang.c \
+ dshot_bitbang_stdperiph.c \
+ exti.c \
+ io_stm32.c \
+ light_ws2811strip_stdperiph.c \
+ persistent.c \
+ pwm_output.c \
+ rcc_stm32.c \
+ sdio_f4xx.c \
+ serial_uart_stdperiph.c \
+ serial_uart_stm32f4xx.c \
+ system_stm32f4xx.c \
+ timer_stdperiph.c \
+ timer_stm32f4xx.c \
+ transponder_ir_io_stdperiph.c \
+ usbd_msc_desc.c \
+ camera_control_stm32.c \
+ startup/system_stm32f4xx.c
ifeq ($(PERIPH_DRIVER), HAL)
VCP_SRC = \
- drivers/mcu/stm32/vcp_hal/usbd_desc.c \
- drivers/mcu/stm32/vcp_hal/usbd_conf.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcp_hal/usbd_desc.c \
+ vcp_hal/usbd_conf.c \
+ vcp_hal/usbd_cdc_interface.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
else
VCP_SRC = \
- drivers/mcu/stm32/vcpf4/stm32f4xx_it.c \
- drivers/mcu/stm32/vcpf4/usb_bsp.c \
- drivers/mcu/stm32/vcpf4/usbd_desc.c \
- drivers/mcu/stm32/vcpf4/usbd_usr.c \
- drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.c \
- drivers/mcu/stm32/vcpf4/usb_cdc_hid.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcpf4/stm32f4xx_it.c \
+ vcpf4/usb_bsp.c \
+ vcpf4/usbd_desc.c \
+ vcpf4/usbd_usr.c \
+ vcpf4/usbd_cdc_vcp.c \
+ vcpf4/usb_cdc_hid.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
endif
MSC_SRC = \
drivers/usb_msc_common.c \
- drivers/mcu/stm32/usb_msc_f4xx.c \
+ usb_msc_f4xx.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
msc/emfat.c \
diff --git a/mk/mcu/STM32F7.mk b/src/platform/STM32/mk/STM32F7.mk
similarity index 71%
rename from mk/mcu/STM32F7.mk
rename to src/platform/STM32/mk/STM32F7.mk
index 18a44d6175..0ab7117f76 100644
--- a/mk/mcu/STM32F7.mk
+++ b/src/platform/STM32/mk/STM32F7.mk
@@ -85,7 +85,8 @@ VPATH := $(VPATH):$(STDPERIPH_DIR)/Src
CMSIS_SRC :=
INCLUDE_DIRS := $(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/stm32 \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/Inc \
$(USBCORE_DIR)/Inc \
$(USBCDC_DIR)/Inc \
@@ -93,8 +94,7 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
$(USBMSC_DIR)/Inc \
$(CMSIS_DIR)/Core/Include \
$(ROOT)/lib/main/STM32F7/Drivers/CMSIS/Device/ST/STM32F7xx/Include \
- $(SRC_DIR)/drivers/mcu/stm32 \
- $(SRC_DIR)/drivers/mcu/stm32/vcp_hal
+ $(TARGET_PLATFORM_DIR)/vcp_hal
#Flags
ARCH_FLAGS = -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant
@@ -105,24 +105,24 @@ DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER
ifeq ($(TARGET_MCU),STM32F765xx)
DEVICE_FLAGS += -DSTM32F765xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f765.ld
-STARTUP_SRC = stm32/startup_stm32f765xx.s
+STARTUP_SRC = startup/startup_stm32f765xx.s
MCU_FLASH_SIZE := 2048
else ifeq ($(TARGET_MCU),STM32F745xx)
DEVICE_FLAGS += -DSTM32F745xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f74x.ld
-STARTUP_SRC = stm32/startup_stm32f745xx.s
+STARTUP_SRC = startup/startup_stm32f745xx.s
MCU_FLASH_SIZE := 1024
else ifeq ($(TARGET_MCU),STM32F746xx)
DEVICE_FLAGS += -DSTM32F746xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f74x.ld
-STARTUP_SRC = stm32/startup_stm32f746xx.s
+STARTUP_SRC = startup/startup_stm32f746xx.s
MCU_FLASH_SIZE := 1024
else ifeq ($(TARGET_MCU),STM32F722xx)
DEVICE_FLAGS += -DSTM32F722xx
ifndef LD_SCRIPT
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f722.ld
endif
-STARTUP_SRC = stm32/startup_stm32f722xx.s
+STARTUP_SRC = startup/startup_stm32f722xx.s
MCU_FLASH_SIZE := 512
# Override the OPTIMISE_SPEED compiler setting to save flash space on these 512KB targets.
# Performance is only slightly affected but around 50 kB of flash are saved.
@@ -133,11 +133,11 @@ endif
DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) -DSTM32
VCP_SRC = \
- drivers/mcu/stm32/vcp_hal/usbd_desc.c \
- drivers/mcu/stm32/vcp_hal/usbd_conf_stm32f7xx.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcp_hal/usbd_desc.c \
+ vcp_hal/usbd_conf_stm32f7xx.c \
+ vcp_hal/usbd_cdc_hid.c \
+ vcp_hal/usbd_cdc_interface.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
MCU_COMMON_SRC = \
@@ -145,39 +145,39 @@ MCU_COMMON_SRC = \
drivers/bus_i2c_timing.c \
drivers/dshot_bitbang_decode.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/stm32/adc_stm32f7xx.c \
- drivers/mcu/stm32/audio_stm32f7xx.c \
- drivers/mcu/stm32/bus_i2c_hal_init.c \
- drivers/mcu/stm32/bus_i2c_hal.c \
- drivers/mcu/stm32/bus_spi_ll.c \
- drivers/mcu/stm32/debug.c \
- drivers/mcu/stm32/dma_reqmap_mcu.c \
- drivers/mcu/stm32/dma_stm32f7xx.c \
- drivers/mcu/stm32/dshot_bitbang_ll.c \
- drivers/mcu/stm32/dshot_bitbang.c \
- drivers/mcu/stm32/exti.c \
- drivers/mcu/stm32/io_stm32.c \
- drivers/mcu/stm32/light_ws2811strip_hal.c \
- drivers/mcu/stm32/persistent.c \
- drivers/mcu/stm32/pwm_output.c \
- drivers/mcu/stm32/pwm_output_dshot_hal.c \
- drivers/mcu/stm32/rcc_stm32.c \
- drivers/mcu/stm32/sdio_f7xx.c \
- drivers/mcu/stm32/serial_uart_hal.c \
- drivers/mcu/stm32/serial_uart_stm32f7xx.c \
- drivers/mcu/stm32/system_stm32f7xx.c \
- drivers/mcu/stm32/timer_hal.c \
- drivers/mcu/stm32/timer_stm32f7xx.c \
- drivers/mcu/stm32/transponder_ir_io_hal.c \
- drivers/mcu/stm32/camera_control.c \
- startup/stm32/system_stm32f7xx.c
+ adc_stm32f7xx.c \
+ audio_stm32f7xx.c \
+ bus_i2c_hal_init.c \
+ bus_i2c_hal.c \
+ bus_spi_ll.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dma_stm32f7xx.c \
+ dshot_bitbang_ll.c \
+ dshot_bitbang.c \
+ exti.c \
+ io_stm32.c \
+ light_ws2811strip_hal.c \
+ persistent.c \
+ pwm_output.c \
+ pwm_output_dshot_hal.c \
+ rcc_stm32.c \
+ sdio_f7xx.c \
+ serial_uart_hal.c \
+ serial_uart_stm32f7xx.c \
+ system_stm32f7xx.c \
+ timer_hal.c \
+ timer_stm32f7xx.c \
+ transponder_ir_io_hal.c \
+ camera_control_stm32.c \
+ startup/system_stm32f7xx.c
MCU_EXCLUDES = \
drivers/bus_i2c.c
MSC_SRC = \
drivers/usb_msc_common.c \
- drivers/mcu/stm32/usb_msc_hal.c \
+ usb_msc_hal.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
msc/emfat.c \
diff --git a/mk/mcu/STM32G4.mk b/src/platform/STM32/mk/STM32G4.mk
similarity index 70%
rename from mk/mcu/STM32G4.mk
rename to src/platform/STM32/mk/STM32G4.mk
index 9373d2f058..fc2b512a56 100644
--- a/mk/mcu/STM32G4.mk
+++ b/src/platform/STM32/mk/STM32G4.mk
@@ -78,7 +78,8 @@ VPATH := $(VPATH):$(STDPERIPH_DIR)/Src
CMSIS_SRC :=
INCLUDE_DIRS := \
$(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/stm32 \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/Inc \
$(USBCORE_DIR)/Inc \
$(USBCDC_DIR)/Inc \
@@ -86,8 +87,7 @@ INCLUDE_DIRS := \
$(USBMSC_DIR)/Inc \
$(CMSIS_DIR)/Core/Include \
$(ROOT)/lib/main/STM32G4/Drivers/CMSIS/Device/ST/STM32G4xx/Include \
- $(SRC_DIR)/drivers/mcu/stm32 \
- $(SRC_DIR)/drivers/mcu/stm32/vcp_hal
+ $(TARGET_PLATFORM_DIR)/vcp_hal
#Flags
ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant
@@ -99,7 +99,7 @@ DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -DUSE_DMA_RAM -DMAX_MPU_
ifeq ($(TARGET_MCU),STM32G474xx)
DEVICE_FLAGS += -DSTM32G474xx
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_g474.ld
-STARTUP_SRC = stm32/startup_stm32g474xx.s
+STARTUP_SRC = startup/startup_stm32g474xx.s
MCU_FLASH_SIZE = 512
# Override the OPTIMISE_SPEED compiler setting to save flash space on these 512KB targets.
# Performance is only slightly affected but around 50 kB of flash are saved.
@@ -110,11 +110,11 @@ endif
DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) -DSTM32
VCP_SRC = \
- drivers/mcu/stm32/vcp_hal/usbd_desc.c \
- drivers/mcu/stm32/vcp_hal/usbd_conf_stm32g4xx.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcp_hal/usbd_desc.c \
+ vcp_hal/usbd_conf_stm32g4xx.c \
+ vcp_hal/usbd_cdc_hid.c \
+ vcp_hal/usbd_cdc_interface.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
MCU_COMMON_SRC = \
@@ -122,32 +122,32 @@ MCU_COMMON_SRC = \
drivers/bus_i2c_timing.c \
drivers/dshot_bitbang_decode.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/stm32/adc_stm32g4xx.c \
- drivers/mcu/stm32/bus_i2c_hal_init.c \
- drivers/mcu/stm32/bus_i2c_hal.c \
- drivers/mcu/stm32/bus_spi_ll.c \
- drivers/mcu/stm32/debug.c \
- drivers/mcu/stm32/dma_reqmap_mcu.c \
- drivers/mcu/stm32/dma_stm32g4xx.c \
- drivers/mcu/stm32/dshot_bitbang_ll.c \
- drivers/mcu/stm32/dshot_bitbang.c \
- drivers/mcu/stm32/exti.c \
- drivers/mcu/stm32/io_stm32.c \
- drivers/mcu/stm32/light_ws2811strip_hal.c \
- drivers/mcu/stm32/memprot_hal.c \
- drivers/mcu/stm32/memprot_stm32g4xx.c \
- drivers/mcu/stm32/persistent.c \
- drivers/mcu/stm32/pwm_output.c \
- drivers/mcu/stm32/pwm_output_dshot_hal.c \
- drivers/mcu/stm32/rcc_stm32.c \
- drivers/mcu/stm32/serial_uart_hal.c \
- drivers/mcu/stm32/serial_uart_stm32g4xx.c \
- drivers/mcu/stm32/system_stm32g4xx.c \
- drivers/mcu/stm32/timer_hal.c \
- drivers/mcu/stm32/timer_stm32g4xx.c \
- drivers/mcu/stm32/transponder_ir_io_hal.c \
- drivers/mcu/stm32/camera_control.c \
- startup/stm32/system_stm32g4xx.c
+ adc_stm32g4xx.c \
+ bus_i2c_hal_init.c \
+ bus_i2c_hal.c \
+ bus_spi_ll.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dma_stm32g4xx.c \
+ dshot_bitbang_ll.c \
+ dshot_bitbang.c \
+ exti.c \
+ io_stm32.c \
+ light_ws2811strip_hal.c \
+ memprot_hal.c \
+ memprot_stm32g4xx.c \
+ persistent.c \
+ pwm_output.c \
+ pwm_output_dshot_hal.c \
+ rcc_stm32.c \
+ serial_uart_hal.c \
+ serial_uart_stm32g4xx.c \
+ system_stm32g4xx.c \
+ timer_hal.c \
+ timer_stm32g4xx.c \
+ transponder_ir_io_hal.c \
+ camera_control_stm32.c \
+ startup/system_stm32g4xx.c
MCU_EXCLUDES = \
drivers/bus_i2c.c
@@ -155,7 +155,7 @@ MCU_EXCLUDES = \
# G4's MSC use the same driver layer file with F7
MSC_SRC = \
drivers/usb_msc_common.c \
- drivers/mcu/stm32/usb_msc_hal.c \
+ usb_msc_hal.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
msc/emfat.c \
diff --git a/mk/mcu/STM32H5.mk b/src/platform/STM32/mk/STM32H5.mk
similarity index 72%
rename from mk/mcu/STM32H5.mk
rename to src/platform/STM32/mk/STM32H5.mk
index b2ca3d1c92..4159e3ce33 100644
--- a/mk/mcu/STM32H5.mk
+++ b/src/platform/STM32/mk/STM32H5.mk
@@ -87,7 +87,8 @@ VPATH := $(VPATH):$(CMSIS_DIR)/Include:$(CMSIS_DIR)/Device/ST/STM32H5x
VPATH := $(VPATH):$(STDPERIPH_DIR)/Src
CMSIS_SRC :=
INCLUDE_DIRS := $(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/stm32 \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/Inc \
$(USBCORE_DIR)/Inc \
$(USBCDC_DIR)/Inc \
@@ -95,8 +96,7 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
$(USBMSC_DIR)/Inc \
$(CMSIS_DIR)/Core/Include \
$(ROOT)/lib/main/STM32H5/Drivers/CMSIS/Device/ST/STM32H5xx/Include \
- $(SRC_DIR)/drivers/mcu/stm32 \
- $(SRC_DIR)/drivers/mcu/stm32/vcp_hal
+ $(TARGET_PLATFORM_DIR)/vcp_hal
#Flags
ARCH_FLAGS = -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant
@@ -110,7 +110,7 @@ DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER
ifeq ($(TARGET_MCU),STM32H563xx)
DEVICE_FLAGS += -DSTM32H563xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h563_2m.ld
-STARTUP_SRC = stm32/startup_stm32h563xx.s
+STARTUP_SRC = startup/startup_stm32h563xx.s
MCU_FLASH_SIZE := 2048
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -141,11 +141,11 @@ DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) -DHSE_STARTUP_TIMEOUT=1000 -DSTM32
VCP_SRC =
#VCP_SRC = \
- drivers/mcu/stm32/vcp_hal/usbd_desc.c \
- drivers/mcu/stm32/vcp_hal/usbd_conf_stm32h5xx.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcp_hal/usbd_desc.c \
+ vcp_hal/usbd_conf_stm32h5xx.c \
+ vcp_hal/usbd_cdc_hid.c \
+ vcp_hal/usbd_cdc_interface.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
MCU_COMMON_SRC = \
@@ -153,42 +153,42 @@ MCU_COMMON_SRC = \
drivers/bus_quadspi.c \
drivers/dshot_bitbang_decode.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/stm32/bus_i2c_hal_init.c \
- drivers/mcu/stm32/bus_i2c_hal.c \
- drivers/mcu/stm32/bus_spi_ll.c \
- drivers/mcu/stm32/bus_quadspi_hal.c \
- drivers/mcu/stm32/debug.c \
- drivers/mcu/stm32/dma_reqmap_mcu.c \
- drivers/mcu/stm32/dshot_bitbang_ll.c \
- drivers/mcu/stm32/dshot_bitbang.c \
- drivers/mcu/stm32/exti.c \
- drivers/mcu/stm32/io_stm32.c \
- drivers/mcu/stm32/light_ws2811strip_hal.c \
- drivers/mcu/stm32/persistent.c \
- drivers/mcu/stm32/pwm_output.c \
- drivers/mcu/stm32/pwm_output_dshot_hal.c \
- drivers/mcu/stm32/rcc_stm32.c \
- drivers/mcu/stm32/serial_uart_hal.c \
- drivers/mcu/stm32/timer_hal.c \
- drivers/mcu/stm32/transponder_ir_io_hal.c \
- drivers/mcu/stm32/camera_control.c \
- drivers/mcu/stm32/system_stm32h5xx.c \
- startup/stm32/system_stm32h5xx.c
+ bus_i2c_hal_init.c \
+ bus_i2c_hal.c \
+ bus_spi_ll.c \
+ bus_quadspi_hal.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dshot_bitbang_ll.c \
+ dshot_bitbang.c \
+ exti.c \
+ io_stm32.c \
+ light_ws2811strip_hal.c \
+ persistent.c \
+ pwm_output.c \
+ pwm_output_dshot_hal.c \
+ rcc_stm32.c \
+ serial_uart_hal.c \
+ timer_hal.c \
+ transponder_ir_io_hal.c \
+ camera_control_stm32.c \
+ system_stm32h5xx.c \
+ startup/system_stm32h5xx.c
-# drivers/mcu/stm32/memprot_hal.c \
-# drivers/mcu/stm32/memprot_stm32h5xx.c \
-# drivers/mcu/stm32/serial_uart_stm32h5xx.c \
-# drivers/mcu/stm32/sdio_h5xx.c \
-# drivers/mcu/stm32/timer_stm32h5xx.c \
-# drivers/mcu/stm32/adc_stm32h5xx.c \
-# drivers/mcu/stm32/dma_stm32h5xx.c \
+# memprot_hal.c \
+# memprot_stm32h5xx.c \
+# serial_uart_stm32h5xx.c \
+# sdio_h5xx.c \
+# timer_stm32h5xx.c \
+# adc_stm32h5xx.c \
+# dma_stm32h5xx.c \
MCU_EXCLUDES = \
drivers/bus_i2c.c
MSC_SRC =
#MSC_SRC = \
- drivers/mcu/stm32/usb_msc_hal.c \
+ usb_msc_hal.c \
drivers/usb_msc_common.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
diff --git a/mk/mcu/STM32H7.mk b/src/platform/STM32/mk/STM32H7.mk
similarity index 79%
rename from mk/mcu/STM32H7.mk
rename to src/platform/STM32/mk/STM32H7.mk
index 817ab40ed5..d448759b85 100644
--- a/mk/mcu/STM32H7.mk
+++ b/src/platform/STM32/mk/STM32H7.mk
@@ -91,7 +91,8 @@ VPATH := $(VPATH):$(CMSIS_DIR)/Include:$(CMSIS_DIR)/Device/ST/STM32H7x
VPATH := $(VPATH):$(STDPERIPH_DIR)/Src
CMSIS_SRC :=
INCLUDE_DIRS := $(INCLUDE_DIRS) \
- $(SRC_DIR)/startup/stm32 \
+ $(TARGET_PLATFORM_DIR) \
+ $(TARGET_PLATFORM_DIR)/startup \
$(STDPERIPH_DIR)/Inc \
$(USBCORE_DIR)/Inc \
$(USBCDC_DIR)/Inc \
@@ -99,8 +100,7 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
$(USBMSC_DIR)/Inc \
$(CMSIS_DIR)/Core/Include \
$(ROOT)/lib/main/STM32H7/Drivers/CMSIS/Device/ST/STM32H7xx/Include \
- $(SRC_DIR)/drivers/mcu/stm32 \
- $(SRC_DIR)/drivers/mcu/stm32/vcp_hal
+ $(TARGET_PLATFORM_DIR)/vcp_hal
#Flags
ARCH_FLAGS = -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant
@@ -117,7 +117,7 @@ DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER
ifeq ($(TARGET_MCU),STM32H743xx)
DEVICE_FLAGS += -DSTM32H743xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h743_2m.ld
-STARTUP_SRC = stm32/startup_stm32h743xx.s
+STARTUP_SRC = startup/startup_stm32h743xx.s
MCU_FLASH_SIZE := 2048
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -132,7 +132,7 @@ endif
else ifeq ($(TARGET_MCU),STM32H7A3xxQ)
DEVICE_FLAGS += -DSTM32H7A3xxQ
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h7a3_2m.ld
-STARTUP_SRC = stm32/startup_stm32h7a3xx.s
+STARTUP_SRC = startup/startup_stm32h7a3xx.s
MCU_FLASH_SIZE := 2048
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -147,7 +147,7 @@ endif
else ifeq ($(TARGET_MCU),STM32H7A3xx)
DEVICE_FLAGS += -DSTM32H7A3xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h7a3_2m.ld
-STARTUP_SRC = stm32/startup_stm32h7a3xx.s
+STARTUP_SRC = startup/startup_stm32h7a3xx.s
MCU_FLASH_SIZE := 2048
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -162,7 +162,7 @@ endif
else ifeq ($(TARGET_MCU),STM32H723xx)
DEVICE_FLAGS += -DSTM32H723xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h723_1m.ld
-STARTUP_SRC = stm32/startup_stm32h723xx.s
+STARTUP_SRC = startup/startup_stm32h723xx.s
DEFAULT_TARGET_FLASH := 1024
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -182,14 +182,14 @@ endif
else ifeq ($(TARGET_MCU),STM32H725xx)
DEVICE_FLAGS += -DSTM32H725xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h723_1m.ld
-STARTUP_SRC = stm32/startup_stm32h723xx.s
+STARTUP_SRC = startup/startup_stm32h723xx.s
MCU_FLASH_SIZE := 1024
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
else ifeq ($(TARGET_MCU),STM32H730xx)
DEVICE_FLAGS += -DSTM32H730xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h730_128m.ld
-STARTUP_SRC = stm32/startup_stm32h730xx.s
+STARTUP_SRC = startup/startup_stm32h730xx.s
DEFAULT_TARGET_FLASH := 128
DEVICE_FLAGS += -DMAX_MPU_REGIONS=16
@@ -211,7 +211,7 @@ endif
else ifeq ($(TARGET_MCU),STM32H750xx)
DEVICE_FLAGS += -DSTM32H750xx
DEFAULT_LD_SCRIPT = $(LINKER_DIR)/stm32_flash_h750_128k.ld
-STARTUP_SRC = stm32/startup_stm32h743xx.s
+STARTUP_SRC = startup/startup_stm32h743xx.s
DEFAULT_TARGET_FLASH := 128
ifeq ($(TARGET_FLASH),)
@@ -256,11 +256,11 @@ endif
DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) -DHSE_STARTUP_TIMEOUT=1000 -DSTM32
VCP_SRC = \
- drivers/mcu/stm32/vcp_hal/usbd_desc.c \
- drivers/mcu/stm32/vcp_hal/usbd_conf_stm32h7xx.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c \
- drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c \
- drivers/mcu/stm32/serial_usb_vcp.c \
+ vcp_hal/usbd_desc.c \
+ vcp_hal/usbd_conf_stm32h7xx.c \
+ vcp_hal/usbd_cdc_hid.c \
+ vcp_hal/usbd_cdc_interface.c \
+ serial_usb_vcp.c \
drivers/usb_io.c
MCU_COMMON_SRC = \
@@ -268,42 +268,42 @@ MCU_COMMON_SRC = \
drivers/bus_quadspi.c \
drivers/dshot_bitbang_decode.c \
drivers/pwm_output_dshot_shared.c \
- drivers/mcu/stm32/adc_stm32h7xx.c \
- drivers/mcu/stm32/audio_stm32h7xx.c \
- drivers/mcu/stm32/bus_i2c_hal_init.c \
- drivers/mcu/stm32/bus_i2c_hal.c \
- drivers/mcu/stm32/bus_spi_ll.c \
- drivers/mcu/stm32/bus_quadspi_hal.c \
- drivers/mcu/stm32/bus_octospi_stm32h7xx.c \
- drivers/mcu/stm32/debug.c \
- drivers/mcu/stm32/dma_reqmap_mcu.c \
- drivers/mcu/stm32/dma_stm32h7xx.c \
- drivers/mcu/stm32/dshot_bitbang_ll.c \
- drivers/mcu/stm32/dshot_bitbang.c \
- drivers/mcu/stm32/exti.c \
- drivers/mcu/stm32/io_stm32.c \
- drivers/mcu/stm32/light_ws2811strip_hal.c \
- drivers/mcu/stm32/memprot_hal.c \
- drivers/mcu/stm32/memprot_stm32h7xx.c \
- drivers/mcu/stm32/persistent.c \
- drivers/mcu/stm32/pwm_output.c \
- drivers/mcu/stm32/pwm_output_dshot_hal.c \
- drivers/mcu/stm32/rcc_stm32.c \
- drivers/mcu/stm32/sdio_h7xx.c \
- drivers/mcu/stm32/serial_uart_hal.c \
- drivers/mcu/stm32/serial_uart_stm32h7xx.c \
- drivers/mcu/stm32/system_stm32h7xx.c \
- drivers/mcu/stm32/timer_hal.c \
- drivers/mcu/stm32/timer_stm32h7xx.c \
- drivers/mcu/stm32/transponder_ir_io_hal.c \
- drivers/mcu/stm32/camera_control.c \
- startup/stm32/system_stm32h7xx.c
+ adc_stm32h7xx.c \
+ audio_stm32h7xx.c \
+ bus_i2c_hal_init.c \
+ bus_i2c_hal.c \
+ bus_spi_ll.c \
+ bus_quadspi_hal.c \
+ bus_octospi_stm32h7xx.c \
+ debug.c \
+ dma_reqmap_mcu.c \
+ dma_stm32h7xx.c \
+ dshot_bitbang_ll.c \
+ dshot_bitbang.c \
+ exti.c \
+ io_stm32.c \
+ light_ws2811strip_hal.c \
+ memprot_hal.c \
+ memprot_stm32h7xx.c \
+ persistent.c \
+ pwm_output.c \
+ pwm_output_dshot_hal.c \
+ rcc_stm32.c \
+ sdio_h7xx.c \
+ serial_uart_hal.c \
+ serial_uart_stm32h7xx.c \
+ system_stm32h7xx.c \
+ timer_hal.c \
+ timer_stm32h7xx.c \
+ transponder_ir_io_hal.c \
+ camera_control_stm32.c \
+ startup/system_stm32h7xx.c
MCU_EXCLUDES = \
drivers/bus_i2c.c
MSC_SRC = \
- drivers/mcu/stm32/usb_msc_hal.c \
+ usb_msc_hal.c \
drivers/usb_msc_common.c \
msc/usbd_storage.c \
msc/usbd_storage_emfat.c \
diff --git a/src/main/drivers/mcu/stm32/persistent.c b/src/platform/STM32/persistent.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/persistent.c
rename to src/platform/STM32/persistent.c
diff --git a/src/main/drivers/mcu/stm32/platform_mcu.h b/src/platform/STM32/platform_mcu.h
similarity index 97%
rename from src/main/drivers/mcu/stm32/platform_mcu.h
rename to src/platform/STM32/platform_mcu.h
index 5aa7986484..3194535032 100644
--- a/src/main/drivers/mcu/stm32/platform_mcu.h
+++ b/src/platform/STM32/platform_mcu.h
@@ -32,7 +32,7 @@
#include "stm32g4xx_ll_bus.h"
#include "stm32g4xx_ll_tim.h"
#include "stm32g4xx_ll_system.h"
-#include "drivers/mcu/stm32/stm32g4xx_ll_ex.h"
+#include "stm32g4xx_ll_ex.h"
// Chip Unique ID on G4
#define U_ID_0 (*(uint32_t*)UID_BASE)
@@ -57,7 +57,7 @@
#include "stm32h7xx_ll_bus.h"
#include "stm32h7xx_ll_tim.h"
#include "stm32h7xx_ll_system.h"
-#include "drivers/mcu/stm32/stm32h7xx_ll_ex.h"
+#include "stm32h7xx_ll_ex.h"
// Chip Unique ID on H7
#define U_ID_0 (*(uint32_t*)UID_BASE)
@@ -82,7 +82,7 @@
#include "stm32f7xx_ll_bus.h"
#include "stm32f7xx_ll_tim.h"
#include "stm32f7xx_ll_system.h"
-#include "drivers/mcu/stm32/stm32f7xx_ll_ex.h"
+#include "stm32f7xx_ll_ex.h"
// Chip Unique ID on F7
#define U_ID_0 (*(uint32_t*)UID_BASE)
diff --git a/src/main/drivers/mcu/stm32/pwm_output.c b/src/platform/STM32/pwm_output.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/pwm_output.c
rename to src/platform/STM32/pwm_output.c
diff --git a/src/main/drivers/mcu/stm32/pwm_output_dshot.c b/src/platform/STM32/pwm_output_dshot.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/pwm_output_dshot.c
rename to src/platform/STM32/pwm_output_dshot.c
diff --git a/src/main/drivers/mcu/stm32/pwm_output_dshot_hal.c b/src/platform/STM32/pwm_output_dshot_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/pwm_output_dshot_hal.c
rename to src/platform/STM32/pwm_output_dshot_hal.c
diff --git a/src/main/drivers/mcu/stm32/rcc_stm32.c b/src/platform/STM32/rcc_stm32.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/rcc_stm32.c
rename to src/platform/STM32/rcc_stm32.c
diff --git a/src/main/drivers/mcu/stm32/sdio_f4xx.c b/src/platform/STM32/sdio_f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/sdio_f4xx.c
rename to src/platform/STM32/sdio_f4xx.c
diff --git a/src/main/drivers/mcu/stm32/sdio_f7xx.c b/src/platform/STM32/sdio_f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/sdio_f7xx.c
rename to src/platform/STM32/sdio_f7xx.c
diff --git a/src/main/drivers/mcu/stm32/sdio_h7xx.c b/src/platform/STM32/sdio_h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/sdio_h7xx.c
rename to src/platform/STM32/sdio_h7xx.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_hal.c b/src/platform/STM32/serial_uart_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_hal.c
rename to src/platform/STM32/serial_uart_hal.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_stdperiph.c b/src/platform/STM32/serial_uart_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_stdperiph.c
rename to src/platform/STM32/serial_uart_stdperiph.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_stm32f4xx.c b/src/platform/STM32/serial_uart_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_stm32f4xx.c
rename to src/platform/STM32/serial_uart_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_stm32f7xx.c b/src/platform/STM32/serial_uart_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_stm32f7xx.c
rename to src/platform/STM32/serial_uart_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_stm32g4xx.c b/src/platform/STM32/serial_uart_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_stm32g4xx.c
rename to src/platform/STM32/serial_uart_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/serial_uart_stm32h7xx.c b/src/platform/STM32/serial_uart_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/serial_uart_stm32h7xx.c
rename to src/platform/STM32/serial_uart_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/serial_usb_vcp.c b/src/platform/STM32/serial_usb_vcp.c
similarity index 99%
rename from src/main/drivers/mcu/stm32/serial_usb_vcp.c
rename to src/platform/STM32/serial_usb_vcp.c
index 30efc169f8..046c28bd12 100644
--- a/src/main/drivers/mcu/stm32/serial_usb_vcp.c
+++ b/src/platform/STM32/serial_usb_vcp.c
@@ -41,7 +41,7 @@
#endif
#include "drivers/usb_io.h"
#elif defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
-#include "drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.h"
+#include "vcp_hal/usbd_cdc_interface.h"
#include "drivers/usb_io.h"
#ifdef USE_USB_CDC_HID
#include "usbd_ioreq.h"
diff --git a/src/main/startup/stm32/startup_stm32f40xx.s b/src/platform/STM32/startup/startup_stm32f40xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f40xx.s
rename to src/platform/STM32/startup/startup_stm32f40xx.s
diff --git a/src/main/startup/stm32/startup_stm32f411xe.s b/src/platform/STM32/startup/startup_stm32f411xe.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f411xe.s
rename to src/platform/STM32/startup/startup_stm32f411xe.s
diff --git a/src/main/startup/stm32/startup_stm32f446xx.s b/src/platform/STM32/startup/startup_stm32f446xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f446xx.s
rename to src/platform/STM32/startup/startup_stm32f446xx.s
diff --git a/src/main/startup/stm32/startup_stm32f722xx.s b/src/platform/STM32/startup/startup_stm32f722xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f722xx.s
rename to src/platform/STM32/startup/startup_stm32f722xx.s
diff --git a/src/main/startup/stm32/startup_stm32f745xx.s b/src/platform/STM32/startup/startup_stm32f745xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f745xx.s
rename to src/platform/STM32/startup/startup_stm32f745xx.s
diff --git a/src/main/startup/stm32/startup_stm32f746xx.s b/src/platform/STM32/startup/startup_stm32f746xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f746xx.s
rename to src/platform/STM32/startup/startup_stm32f746xx.s
diff --git a/src/main/startup/stm32/startup_stm32f765xx.s b/src/platform/STM32/startup/startup_stm32f765xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32f765xx.s
rename to src/platform/STM32/startup/startup_stm32f765xx.s
diff --git a/src/main/startup/stm32/startup_stm32g474xx.s b/src/platform/STM32/startup/startup_stm32g474xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32g474xx.s
rename to src/platform/STM32/startup/startup_stm32g474xx.s
diff --git a/src/main/startup/stm32/startup_stm32h563xx.s b/src/platform/STM32/startup/startup_stm32h563xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32h563xx.s
rename to src/platform/STM32/startup/startup_stm32h563xx.s
diff --git a/src/main/startup/stm32/startup_stm32h723xx.s b/src/platform/STM32/startup/startup_stm32h723xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32h723xx.s
rename to src/platform/STM32/startup/startup_stm32h723xx.s
diff --git a/src/main/startup/stm32/startup_stm32h730xx.s b/src/platform/STM32/startup/startup_stm32h730xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32h730xx.s
rename to src/platform/STM32/startup/startup_stm32h730xx.s
diff --git a/src/main/startup/stm32/startup_stm32h743xx.s b/src/platform/STM32/startup/startup_stm32h743xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32h743xx.s
rename to src/platform/STM32/startup/startup_stm32h743xx.s
diff --git a/src/main/startup/stm32/startup_stm32h7a3xx.s b/src/platform/STM32/startup/startup_stm32h7a3xx.s
similarity index 100%
rename from src/main/startup/stm32/startup_stm32h7a3xx.s
rename to src/platform/STM32/startup/startup_stm32h7a3xx.s
diff --git a/src/main/startup/stm32/stm32f4xx_hal_conf.h b/src/platform/STM32/startup/stm32f4xx_hal_conf.h
similarity index 100%
rename from src/main/startup/stm32/stm32f4xx_hal_conf.h
rename to src/platform/STM32/startup/stm32f4xx_hal_conf.h
diff --git a/src/main/startup/stm32/stm32f7xx_hal_conf.h b/src/platform/STM32/startup/stm32f7xx_hal_conf.h
similarity index 100%
rename from src/main/startup/stm32/stm32f7xx_hal_conf.h
rename to src/platform/STM32/startup/stm32f7xx_hal_conf.h
diff --git a/src/main/startup/stm32/stm32g4xx_hal_conf.h b/src/platform/STM32/startup/stm32g4xx_hal_conf.h
similarity index 100%
rename from src/main/startup/stm32/stm32g4xx_hal_conf.h
rename to src/platform/STM32/startup/stm32g4xx_hal_conf.h
diff --git a/src/main/startup/stm32/stm32h5xx_hal_conf.h b/src/platform/STM32/startup/stm32h5xx_hal_conf.h
similarity index 100%
rename from src/main/startup/stm32/stm32h5xx_hal_conf.h
rename to src/platform/STM32/startup/stm32h5xx_hal_conf.h
diff --git a/src/main/startup/stm32/stm32h7xx_hal_conf.h b/src/platform/STM32/startup/stm32h7xx_hal_conf.h
similarity index 100%
rename from src/main/startup/stm32/stm32h7xx_hal_conf.h
rename to src/platform/STM32/startup/stm32h7xx_hal_conf.h
diff --git a/src/main/startup/stm32/system_stm32f4xx.c b/src/platform/STM32/startup/system_stm32f4xx.c
similarity index 100%
rename from src/main/startup/stm32/system_stm32f4xx.c
rename to src/platform/STM32/startup/system_stm32f4xx.c
diff --git a/src/main/startup/stm32/system_stm32f4xx.h b/src/platform/STM32/startup/system_stm32f4xx.h
similarity index 100%
rename from src/main/startup/stm32/system_stm32f4xx.h
rename to src/platform/STM32/startup/system_stm32f4xx.h
diff --git a/src/main/startup/stm32/system_stm32f7xx.c b/src/platform/STM32/startup/system_stm32f7xx.c
similarity index 100%
rename from src/main/startup/stm32/system_stm32f7xx.c
rename to src/platform/STM32/startup/system_stm32f7xx.c
diff --git a/src/main/startup/stm32/system_stm32f7xx.h b/src/platform/STM32/startup/system_stm32f7xx.h
similarity index 100%
rename from src/main/startup/stm32/system_stm32f7xx.h
rename to src/platform/STM32/startup/system_stm32f7xx.h
diff --git a/src/main/startup/stm32/system_stm32g4xx.c b/src/platform/STM32/startup/system_stm32g4xx.c
similarity index 100%
rename from src/main/startup/stm32/system_stm32g4xx.c
rename to src/platform/STM32/startup/system_stm32g4xx.c
diff --git a/src/main/startup/stm32/system_stm32g4xx.h b/src/platform/STM32/startup/system_stm32g4xx.h
similarity index 100%
rename from src/main/startup/stm32/system_stm32g4xx.h
rename to src/platform/STM32/startup/system_stm32g4xx.h
diff --git a/src/main/startup/stm32/system_stm32h5xx.c b/src/platform/STM32/startup/system_stm32h5xx.c
similarity index 100%
rename from src/main/startup/stm32/system_stm32h5xx.c
rename to src/platform/STM32/startup/system_stm32h5xx.c
diff --git a/src/main/startup/stm32/system_stm32h5xx.h b/src/platform/STM32/startup/system_stm32h5xx.h
similarity index 100%
rename from src/main/startup/stm32/system_stm32h5xx.h
rename to src/platform/STM32/startup/system_stm32h5xx.h
diff --git a/src/main/startup/stm32/system_stm32h7xx.c b/src/platform/STM32/startup/system_stm32h7xx.c
similarity index 100%
rename from src/main/startup/stm32/system_stm32h7xx.c
rename to src/platform/STM32/startup/system_stm32h7xx.c
diff --git a/src/main/startup/stm32/system_stm32h7xx.h b/src/platform/STM32/startup/system_stm32h7xx.h
similarity index 100%
rename from src/main/startup/stm32/system_stm32h7xx.h
rename to src/platform/STM32/startup/system_stm32h7xx.h
diff --git a/src/main/drivers/mcu/stm32/stm32f7xx_ll_ex.h b/src/platform/STM32/stm32f7xx_ll_ex.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/stm32f7xx_ll_ex.h
rename to src/platform/STM32/stm32f7xx_ll_ex.h
diff --git a/src/main/drivers/mcu/stm32/stm32g4xx_ll_ex.h b/src/platform/STM32/stm32g4xx_ll_ex.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/stm32g4xx_ll_ex.h
rename to src/platform/STM32/stm32g4xx_ll_ex.h
diff --git a/src/main/drivers/mcu/stm32/stm32h7xx_ll_ex.h b/src/platform/STM32/stm32h7xx_ll_ex.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/stm32h7xx_ll_ex.h
rename to src/platform/STM32/stm32h7xx_ll_ex.h
diff --git a/src/main/drivers/mcu/stm32/system_stm32f4xx.c b/src/platform/STM32/system_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/system_stm32f4xx.c
rename to src/platform/STM32/system_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/system_stm32f7xx.c b/src/platform/STM32/system_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/system_stm32f7xx.c
rename to src/platform/STM32/system_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/system_stm32g4xx.c b/src/platform/STM32/system_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/system_stm32g4xx.c
rename to src/platform/STM32/system_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/system_stm32h5xx.c b/src/platform/STM32/system_stm32h5xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/system_stm32h5xx.c
rename to src/platform/STM32/system_stm32h5xx.c
diff --git a/src/main/drivers/mcu/stm32/system_stm32h7xx.c b/src/platform/STM32/system_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/system_stm32h7xx.c
rename to src/platform/STM32/system_stm32h7xx.c
diff --git a/src/main/target/STM32F405/target.h b/src/platform/STM32/target/STM32F405/target.h
similarity index 100%
rename from src/main/target/STM32F405/target.h
rename to src/platform/STM32/target/STM32F405/target.h
diff --git a/src/main/target/STM32F405/target.mk b/src/platform/STM32/target/STM32F405/target.mk
similarity index 100%
rename from src/main/target/STM32F405/target.mk
rename to src/platform/STM32/target/STM32F405/target.mk
diff --git a/src/main/target/STM32F411/target.h b/src/platform/STM32/target/STM32F411/target.h
similarity index 100%
rename from src/main/target/STM32F411/target.h
rename to src/platform/STM32/target/STM32F411/target.h
diff --git a/src/main/target/STM32F411/target.mk b/src/platform/STM32/target/STM32F411/target.mk
similarity index 100%
rename from src/main/target/STM32F411/target.mk
rename to src/platform/STM32/target/STM32F411/target.mk
diff --git a/src/main/target/STM32F446/target.h b/src/platform/STM32/target/STM32F446/target.h
similarity index 100%
rename from src/main/target/STM32F446/target.h
rename to src/platform/STM32/target/STM32F446/target.h
diff --git a/src/main/target/STM32F446/target.mk b/src/platform/STM32/target/STM32F446/target.mk
similarity index 100%
rename from src/main/target/STM32F446/target.mk
rename to src/platform/STM32/target/STM32F446/target.mk
diff --git a/src/main/target/STM32F745/target.h b/src/platform/STM32/target/STM32F745/target.h
similarity index 100%
rename from src/main/target/STM32F745/target.h
rename to src/platform/STM32/target/STM32F745/target.h
diff --git a/src/main/target/STM32F745/target.mk b/src/platform/STM32/target/STM32F745/target.mk
similarity index 100%
rename from src/main/target/STM32F745/target.mk
rename to src/platform/STM32/target/STM32F745/target.mk
diff --git a/src/main/target/STM32F7X2/target.h b/src/platform/STM32/target/STM32F7X2/target.h
similarity index 100%
rename from src/main/target/STM32F7X2/target.h
rename to src/platform/STM32/target/STM32F7X2/target.h
diff --git a/src/main/target/STM32F7X2/target.mk b/src/platform/STM32/target/STM32F7X2/target.mk
similarity index 100%
rename from src/main/target/STM32F7X2/target.mk
rename to src/platform/STM32/target/STM32F7X2/target.mk
diff --git a/src/main/target/STM32G47X/target.h b/src/platform/STM32/target/STM32G47X/target.h
similarity index 100%
rename from src/main/target/STM32G47X/target.h
rename to src/platform/STM32/target/STM32G47X/target.h
diff --git a/src/main/target/STM32G47X/target.mk b/src/platform/STM32/target/STM32G47X/target.mk
similarity index 100%
rename from src/main/target/STM32G47X/target.mk
rename to src/platform/STM32/target/STM32G47X/target.mk
diff --git a/src/main/target/STM32H563/.exclude b/src/platform/STM32/target/STM32H563/.exclude
similarity index 100%
rename from src/main/target/STM32H563/.exclude
rename to src/platform/STM32/target/STM32H563/.exclude
diff --git a/src/main/target/STM32H563/target.h b/src/platform/STM32/target/STM32H563/target.h
similarity index 100%
rename from src/main/target/STM32H563/target.h
rename to src/platform/STM32/target/STM32H563/target.h
diff --git a/src/main/target/STM32H563/target.mk b/src/platform/STM32/target/STM32H563/target.mk
similarity index 100%
rename from src/main/target/STM32H563/target.mk
rename to src/platform/STM32/target/STM32H563/target.mk
diff --git a/src/main/target/STM32H723/readme.txt b/src/platform/STM32/target/STM32H723/readme.txt
similarity index 100%
rename from src/main/target/STM32H723/readme.txt
rename to src/platform/STM32/target/STM32H723/readme.txt
diff --git a/src/main/target/STM32H723/target.h b/src/platform/STM32/target/STM32H723/target.h
similarity index 100%
rename from src/main/target/STM32H723/target.h
rename to src/platform/STM32/target/STM32H723/target.h
diff --git a/src/main/target/STM32H723/target.mk b/src/platform/STM32/target/STM32H723/target.mk
similarity index 100%
rename from src/main/target/STM32H723/target.mk
rename to src/platform/STM32/target/STM32H723/target.mk
diff --git a/src/main/target/STM32H725/readme.txt b/src/platform/STM32/target/STM32H725/readme.txt
similarity index 100%
rename from src/main/target/STM32H725/readme.txt
rename to src/platform/STM32/target/STM32H725/readme.txt
diff --git a/src/main/target/STM32H725/target.h b/src/platform/STM32/target/STM32H725/target.h
similarity index 100%
rename from src/main/target/STM32H725/target.h
rename to src/platform/STM32/target/STM32H725/target.h
diff --git a/src/main/target/STM32H725/target.mk b/src/platform/STM32/target/STM32H725/target.mk
similarity index 100%
rename from src/main/target/STM32H725/target.mk
rename to src/platform/STM32/target/STM32H725/target.mk
diff --git a/src/main/target/STM32H730/target.h b/src/platform/STM32/target/STM32H730/target.h
similarity index 100%
rename from src/main/target/STM32H730/target.h
rename to src/platform/STM32/target/STM32H730/target.h
diff --git a/src/main/target/STM32H730/target.mk b/src/platform/STM32/target/STM32H730/target.mk
similarity index 100%
rename from src/main/target/STM32H730/target.mk
rename to src/platform/STM32/target/STM32H730/target.mk
diff --git a/src/main/target/STM32H743/target.h b/src/platform/STM32/target/STM32H743/target.h
similarity index 100%
rename from src/main/target/STM32H743/target.h
rename to src/platform/STM32/target/STM32H743/target.h
diff --git a/src/main/target/STM32H743/target.mk b/src/platform/STM32/target/STM32H743/target.mk
similarity index 100%
rename from src/main/target/STM32H743/target.mk
rename to src/platform/STM32/target/STM32H743/target.mk
diff --git a/src/main/target/STM32H750/target.h b/src/platform/STM32/target/STM32H750/target.h
similarity index 100%
rename from src/main/target/STM32H750/target.h
rename to src/platform/STM32/target/STM32H750/target.h
diff --git a/src/main/target/STM32H750/target.mk b/src/platform/STM32/target/STM32H750/target.mk
similarity index 100%
rename from src/main/target/STM32H750/target.mk
rename to src/platform/STM32/target/STM32H750/target.mk
diff --git a/src/main/drivers/mcu/stm32/timer_def.h b/src/platform/STM32/timer_def.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_def.h
rename to src/platform/STM32/timer_def.h
diff --git a/src/main/drivers/mcu/stm32/timer_hal.c b/src/platform/STM32/timer_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_hal.c
rename to src/platform/STM32/timer_hal.c
diff --git a/src/main/drivers/mcu/stm32/timer_stdperiph.c b/src/platform/STM32/timer_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_stdperiph.c
rename to src/platform/STM32/timer_stdperiph.c
diff --git a/src/main/drivers/mcu/stm32/timer_stm32f4xx.c b/src/platform/STM32/timer_stm32f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_stm32f4xx.c
rename to src/platform/STM32/timer_stm32f4xx.c
diff --git a/src/main/drivers/mcu/stm32/timer_stm32f7xx.c b/src/platform/STM32/timer_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_stm32f7xx.c
rename to src/platform/STM32/timer_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/timer_stm32g4xx.c b/src/platform/STM32/timer_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_stm32g4xx.c
rename to src/platform/STM32/timer_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/timer_stm32h7xx.c b/src/platform/STM32/timer_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/timer_stm32h7xx.c
rename to src/platform/STM32/timer_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/transponder_ir_io_hal.c b/src/platform/STM32/transponder_ir_io_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/transponder_ir_io_hal.c
rename to src/platform/STM32/transponder_ir_io_hal.c
diff --git a/src/main/drivers/mcu/stm32/transponder_ir_io_stdperiph.c b/src/platform/STM32/transponder_ir_io_stdperiph.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/transponder_ir_io_stdperiph.c
rename to src/platform/STM32/transponder_ir_io_stdperiph.c
diff --git a/src/main/drivers/mcu/stm32/usb_msc_f4xx.c b/src/platform/STM32/usb_msc_f4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/usb_msc_f4xx.c
rename to src/platform/STM32/usb_msc_f4xx.c
diff --git a/src/main/drivers/mcu/stm32/usb_msc_hal.c b/src/platform/STM32/usb_msc_hal.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/usb_msc_hal.c
rename to src/platform/STM32/usb_msc_hal.c
diff --git a/src/main/drivers/mcu/stm32/usbd_msc_desc.c b/src/platform/STM32/usbd_msc_desc.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/usbd_msc_desc.c
rename to src/platform/STM32/usbd_msc_desc.c
diff --git a/src/main/drivers/mcu/stm32/usbd_msc_desc.h b/src/platform/STM32/usbd_msc_desc.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/usbd_msc_desc.h
rename to src/platform/STM32/usbd_msc_desc.h
diff --git a/src/main/drivers/mcu/stm32/vcp/hw_config.c b/src/platform/STM32/vcp/hw_config.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/hw_config.c
rename to src/platform/STM32/vcp/hw_config.c
diff --git a/src/main/drivers/mcu/stm32/vcp/hw_config.h b/src/platform/STM32/vcp/hw_config.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/hw_config.h
rename to src/platform/STM32/vcp/hw_config.h
diff --git a/src/main/drivers/mcu/stm32/vcp/platform_config.h b/src/platform/STM32/vcp/platform_config.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/platform_config.h
rename to src/platform/STM32/vcp/platform_config.h
diff --git a/src/main/drivers/mcu/stm32/vcp/stm32_it.c b/src/platform/STM32/vcp/stm32_it.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/stm32_it.c
rename to src/platform/STM32/vcp/stm32_it.c
diff --git a/src/main/drivers/mcu/stm32/vcp/stm32_it.h b/src/platform/STM32/vcp/stm32_it.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/stm32_it.h
rename to src/platform/STM32/vcp/stm32_it.h
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_conf.h b/src/platform/STM32/vcp/usb_conf.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_conf.h
rename to src/platform/STM32/vcp/usb_conf.h
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_desc.c b/src/platform/STM32/vcp/usb_desc.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_desc.c
rename to src/platform/STM32/vcp/usb_desc.c
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_desc.h b/src/platform/STM32/vcp/usb_desc.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_desc.h
rename to src/platform/STM32/vcp/usb_desc.h
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_endp.c b/src/platform/STM32/vcp/usb_endp.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_endp.c
rename to src/platform/STM32/vcp/usb_endp.c
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_istr.c b/src/platform/STM32/vcp/usb_istr.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_istr.c
rename to src/platform/STM32/vcp/usb_istr.c
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_istr.h b/src/platform/STM32/vcp/usb_istr.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_istr.h
rename to src/platform/STM32/vcp/usb_istr.h
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_prop.c b/src/platform/STM32/vcp/usb_prop.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_prop.c
rename to src/platform/STM32/vcp/usb_prop.c
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_prop.h b/src/platform/STM32/vcp/usb_prop.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_prop.h
rename to src/platform/STM32/vcp/usb_prop.h
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_pwr.c b/src/platform/STM32/vcp/usb_pwr.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_pwr.c
rename to src/platform/STM32/vcp/usb_pwr.c
diff --git a/src/main/drivers/mcu/stm32/vcp/usb_pwr.h b/src/platform/STM32/vcp/usb_pwr.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp/usb_pwr.h
rename to src/platform/STM32/vcp/usb_pwr.h
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c b/src/platform/STM32/vcp_hal/usbd_cdc_hid.c
similarity index 99%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c
rename to src/platform/STM32/vcp_hal/usbd_cdc_hid.c
index 55db69b824..4727b4a29f 100644
--- a/src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_hid.c
+++ b/src/platform/STM32/vcp_hal/usbd_cdc_hid.c
@@ -35,7 +35,7 @@
#include "drivers/serial_usb_vcp.h"
#include "usbd_hid.h"
-#include "drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.h"
+#include "vcp_hal/usbd_cdc_interface.h"
#define USB_HID_CDC_CONFIG_DESC_SIZ (USB_HID_CONFIG_DESC_SIZ - 9 + USB_CDC_CONFIG_DESC_SIZ + 8)
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c b/src/platform/STM32/vcp_hal/usbd_cdc_interface.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.c
rename to src/platform/STM32/vcp_hal/usbd_cdc_interface.c
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.h b/src/platform/STM32/vcp_hal/usbd_cdc_interface.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_cdc_interface.h
rename to src/platform/STM32/vcp_hal/usbd_cdc_interface.h
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_conf.h b/src/platform/STM32/vcp_hal/usbd_conf.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_conf.h
rename to src/platform/STM32/vcp_hal/usbd_conf.h
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32f7xx.c b/src/platform/STM32/vcp_hal/usbd_conf_stm32f7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32f7xx.c
rename to src/platform/STM32/vcp_hal/usbd_conf_stm32f7xx.c
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32g4xx.c b/src/platform/STM32/vcp_hal/usbd_conf_stm32g4xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32g4xx.c
rename to src/platform/STM32/vcp_hal/usbd_conf_stm32g4xx.c
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32h7xx.c b/src/platform/STM32/vcp_hal/usbd_conf_stm32h7xx.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_conf_stm32h7xx.c
rename to src/platform/STM32/vcp_hal/usbd_conf_stm32h7xx.c
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_desc.c b/src/platform/STM32/vcp_hal/usbd_desc.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_desc.c
rename to src/platform/STM32/vcp_hal/usbd_desc.c
diff --git a/src/main/drivers/mcu/stm32/vcp_hal/usbd_desc.h b/src/platform/STM32/vcp_hal/usbd_desc.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcp_hal/usbd_desc.h
rename to src/platform/STM32/vcp_hal/usbd_desc.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/stm32f4xx_it.c b/src/platform/STM32/vcpf4/stm32f4xx_it.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/stm32f4xx_it.c
rename to src/platform/STM32/vcpf4/stm32f4xx_it.c
diff --git a/src/main/drivers/mcu/stm32/vcpf4/stm32f4xx_it.h b/src/platform/STM32/vcpf4/stm32f4xx_it.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/stm32f4xx_it.h
rename to src/platform/STM32/vcpf4/stm32f4xx_it.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usb_bsp.c b/src/platform/STM32/vcpf4/usb_bsp.c
similarity index 98%
rename from src/main/drivers/mcu/stm32/vcpf4/usb_bsp.c
rename to src/platform/STM32/vcpf4/usb_bsp.c
index 690f6d704d..379a29ce25 100644
--- a/src/main/drivers/mcu/stm32/vcpf4/usb_bsp.c
+++ b/src/platform/STM32/vcpf4/usb_bsp.c
@@ -27,8 +27,8 @@
#include "usb_bsp.h"
#include "usbd_conf.h"
#include "stm32f4xx_conf.h"
-#include "../drivers/nvic.h"
-#include "../drivers/io.h"
+#include "drivers/nvic.h"
+#include "drivers/io.h"
void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev)
{
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usb_cdc_hid.c b/src/platform/STM32/vcpf4/usb_cdc_hid.c
similarity index 95%
rename from src/main/drivers/mcu/stm32/vcpf4/usb_cdc_hid.c
rename to src/platform/STM32/vcpf4/usb_cdc_hid.c
index a96deb7347..d39a92942e 100644
--- a/src/main/drivers/mcu/stm32/vcpf4/usb_cdc_hid.c
+++ b/src/platform/STM32/vcpf4/usb_cdc_hid.c
@@ -25,7 +25,7 @@
#ifdef USE_USB_CDC_HID
-#include "drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.h"
+#include "vcpf4/usbd_cdc_vcp.h"
#include "usbd_hid_core.h"
void sendReport(uint8_t *report, uint8_t len)
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usb_conf.h b/src/platform/STM32/vcpf4/usb_conf.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usb_conf.h
rename to src/platform/STM32/vcpf4/usb_conf.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.c b/src/platform/STM32/vcpf4/usbd_cdc_vcp.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.c
rename to src/platform/STM32/vcpf4/usbd_cdc_vcp.c
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.h b/src/platform/STM32/vcpf4/usbd_cdc_vcp.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_cdc_vcp.h
rename to src/platform/STM32/vcpf4/usbd_cdc_vcp.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_conf.h b/src/platform/STM32/vcpf4/usbd_conf.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_conf.h
rename to src/platform/STM32/vcpf4/usbd_conf.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_desc.c b/src/platform/STM32/vcpf4/usbd_desc.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_desc.c
rename to src/platform/STM32/vcpf4/usbd_desc.c
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_desc.h b/src/platform/STM32/vcpf4/usbd_desc.h
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_desc.h
rename to src/platform/STM32/vcpf4/usbd_desc.h
diff --git a/src/main/drivers/mcu/stm32/vcpf4/usbd_usr.c b/src/platform/STM32/vcpf4/usbd_usr.c
similarity index 100%
rename from src/main/drivers/mcu/stm32/vcpf4/usbd_usr.c
rename to src/platform/STM32/vcpf4/usbd_usr.c