diff --git a/Makefile b/Makefile
index 3bab5cbfe4..95c2af8862 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@
# Things that the user might override on the commandline
#
-# The target to build, must be one of NAZE, FY90Q OR OLIMEXINO
+# The target to build, must be one of NAZE OR OLIMEXINO
TARGET ?= NAZE
# Compile-time options
@@ -30,7 +30,7 @@ SERIAL_DEVICE ?= /dev/ttyUSB0
# Things that need to be maintained as the source changes
#
-VALID_TARGETS = NAZE FY90Q OLIMEXINO
+VALID_TARGETS = NAZE OLIMEXINO
# Working directories
ROOT = $(dir $(lastword $(MAKEFILE_LIST)))
@@ -89,11 +89,6 @@ NAZE_SRC = drv_adc.c \
drv_timer.c \
$(COMMON_SRC)
-# Source files for the FY90Q target
-FY90Q_SRC = drv_adc_fy90q.c \
- drv_pwm_fy90q.c \
- $(COMMON_SRC)
-
# Source files for the OLIMEXINO target
OLIMEXINO_SRC = drv_spi.c \
drv_adc.c \
diff --git a/baseflight.uvproj b/baseflight.uvproj
index c17889b29e..765943e863 100755
--- a/baseflight.uvproj
+++ b/baseflight.uvproj
@@ -139,11 +139,9 @@
0
1
0
- 1
- 1
0
- 1
+ 7
@@ -157,7 +155,7 @@
- BIN\UL2CM3.DLL
+ Segger\JL2CM3.dll
@@ -560,98 +558,6 @@
1
.\src\drv_mpu6050.c
-
- drv_adc_fy90q.c
- 1
- .\src\drv_adc_fy90q.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_pwm_fy90q.c
- 1
- .\src\drv_pwm_fy90q.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
drv_mma845x.c
1
@@ -829,47 +735,6 @@
2
.\src\baseflight_startups\startup_stm32f10x_md.s
-
- startup_stm32f10x_md_fy90q.s
- 2
- .\src\baseflight_startups\startup_stm32f10x_md_fy90q.s
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
printf.c
1
@@ -1019,7 +884,7 @@
0
0
- 1
+ 7
@@ -1033,7 +898,7 @@
- BIN\UL2CM3.DLL
+ Segger\JL2CM3.dll
@@ -1045,7 +910,7 @@
1
4096
- 0
+ 1
BIN\UL2CM3.DLL
"" ()
@@ -1436,98 +1301,6 @@
1
.\src\drv_mpu6050.c
-
- drv_adc_fy90q.c
- 1
- .\src\drv_adc_fy90q.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_pwm_fy90q.c
- 1
- .\src\drv_pwm_fy90q.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
drv_mma845x.c
1
@@ -1648,1169 +1421,6 @@
2
.\src\baseflight_startups\startup_stm32f10x_md.s
-
- startup_stm32f10x_md_fy90q.s
- 2
- .\src\baseflight_startups\startup_stm32f10x_md_fy90q.s
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- printf.c
- 1
- .\src\printf.c
-
-
- stm32f10x_spi.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c
-
-
-
-
-
-
- STM32-FY90Q
- 0x4
- ARM-ADS
-
-
- STM32F103RB
- STMicroelectronics
- IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")
-
- "STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code")
- UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)
- 4231
- stm32f10x_md.h
-
-
-
-
-
-
-
-
-
- SFD\ST\STM32F10xx\STM32F10xxB.sfr
- 0
- 0
-
-
-
- ST\STM32F10x\
- ST\STM32F10x\
-
- 0
- 0
- 0
- 0
- 1
-
- .\obj\
- baseflight_fy90q
- 1
- 0
- 1
- 1
- 1
- .\obj\
- 1
- 0
- 0
-
- 0
- 0
-
-
- 0
- 0
- 0
- 0
-
-
- 0
- 0
-
-
- 0
- 0
-
-
- 0
- 0
-
-
- 0
- 0
-
- 0
-
-
-
- 0
- 0
- 0
- 0
- 0
- 1
- 0
- 0
- 0
- 0
- 3
-
-
- 1
-
-
- SARMCM3.DLL
-
- DARMSTM.DLL
- -pSTM32F103RB
- SARMCM3.DLL
-
- TARMSTM.DLL
- -pSTM32F103RB
-
-
-
- 1
- 0
- 0
- 0
- 16
-
-
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
-
-
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 1
- 0
-
- 0
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
- BIN\UL2CM3.DLL
-
-
-
-
- 1
- 0
- 0
- 1
- 1
- 4096
-
- 0
- BIN\UL2CM3.DLL
- "" ()
-
-
-
-
- 0
-
-
-
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 1
- 1
- 0
- 1
- 1
- 0
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
- "Cortex-M3"
-
- 0
- 0
- 0
- 1
- 1
- 0
- 0
- 0
- 0
- 0
- 8
- 1
- 0
- 0
- 3
- 3
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 1
- 0
- 0
- 0
- 0
- 1
- 0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x20000000
- 0x5000
-
-
- 1
- 0x8000000
- 0x20000
-
-
- 0
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x8000000
- 0x20000
-
-
- 1
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x20000000
- 0x5000
-
-
- 0
- 0x0
- 0x0
-
-
-
-
-
- 1
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
- STM32F10X_MD,USE_STDPERIPH_DRIVER,FY90Q
-
- lib\CMSIS\CM3\CoreSupport;lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x;lib\STM32F10x_StdPeriph_Driver\inc
-
-
-
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 1
- 0
- 0
- 0
- 1
- 0
- 0x08000000
- 0x20000000
-
-
-
-
-
-
-
-
-
-
-
- App
-
-
- cli.c
- 1
- .\src\cli.c
-
-
- config.c
- 1
- .\src\config.c
-
-
- imu.c
- 1
- .\src\imu.c
-
-
- main.c
- 1
- .\src\main.c
-
-
- mixer.c
- 1
- .\src\mixer.c
-
-
- mw.c
- 1
- .\src\mw.c
-
-
- sensors.c
- 1
- .\src\sensors.c
-
-
- serial.c
- 1
- .\src\serial.c
-
-
- board.h
- 5
- .\src\board.h
-
-
- mw.h
- 5
- .\src\mw.h
-
-
- gps.c
- 1
- .\src\gps.c
-
-
- spektrum.c
- 1
- .\src\spektrum.c
-
-
- buzzer.c
- 1
- .\src\buzzer.c
-
-
- utils.c
- 1
- .\src\utils.c
-
-
- sbus.c
- 1
- .\src\sbus.c
-
-
- sumd.c
- 1
- .\src\sumd.c
-
-
- telemetry_frsky.c
- 1
- .\src\telemetry_frsky.c
-
-
- telemetry_common.c
- 1
- .\src\telemetry_common.c
-
-
- telemetry_hott.c
- 1
- .\src\telemetry_hott.c
-
-
- rxmsp.c
- 1
- .\src\rxmsp.c
-
-
-
-
- Drivers
-
-
- drv_adc.c
- 1
- .\src\drv_adc.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_adxl345.c
- 1
- .\src\drv_adxl345.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_bmp085.c
- 1
- .\src\drv_bmp085.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_hmc5883l.c
- 1
- .\src\drv_hmc5883l.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_i2c.c
- 1
- .\src\drv_i2c.c
-
-
- drv_mpu3050.c
- 1
- .\src\drv_mpu3050.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_pwm.c
- 1
- .\src\drv_pwm.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_system.c
- 1
- .\src\drv_system.c
-
-
- drv_uart.c
- 1
- .\src\drv_uart.c
-
-
- drv_ledring.c
- 1
- .\src\drv_ledring.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_mpu6050.c
- 1
- .\src\drv_mpu6050.c
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- drv_adc_fy90q.c
- 1
- .\src\drv_adc_fy90q.c
-
-
- drv_pwm_fy90q.c
- 1
- .\src\drv_pwm_fy90q.c
-
-
- drv_mma845x.c
- 1
- .\src\drv_mma845x.c
-
-
- drv_hcsr04.c
- 1
- .\src\drv_hcsr04.c
-
-
- drv_i2c_soft.c
- 1
- .\src\drv_i2c_soft.c
-
-
- drv_l3g4200d.c
- 1
- .\src\drv_l3g4200d.c
-
-
- drv_ms5611.c
- 1
- .\src\drv_ms5611.c
-
-
- drv_gpio.c
- 1
- .\src\drv_gpio.c
-
-
- drv_spi.c
- 1
- .\src\drv_spi.c
-
-
- drv_timer.c
- 1
- .\src\drv_timer.c
-
-
- drv_softserial.c
- 1
- .\src\drv_softserial.c
-
-
- drv_bma280.c
- 1
- .\src\drv_bma280.c
-
-
- drv_serial.c
- 1
- .\src\drv_serial.c
-
-
-
-
- System
-
-
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 2
- 11
-
-
- 0
-
-
-
- 2
- 4
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
-
-
-
-
-
-
-
-
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- core_cm3.c
- 1
- .\lib\CMSIS\CM3\CoreSupport\core_cm3.c
-
-
- system_stm32f10x.c
- 1
- .\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
-
-
- misc.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\misc.c
-
-
- stm32f10x_adc.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c
-
-
- stm32f10x_dma.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c
-
-
- stm32f10x_exti.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c
-
-
- stm32f10x_i2c.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c
-
-
- stm32f10x_rcc.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c
-
-
- stm32f10x_tim.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c
-
-
- stm32f10x_usart.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c
-
-
- stm32f10x_flash.c
- 1
- .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c
-
-
- startup_stm32f10x_md.s
- 2
- .\src\baseflight_startups\startup_stm32f10x_md.s
-
-
- 2
- 0
- 0
- 0
- 0
- 0
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- startup_stm32f10x_md_fy90q.s
- 2
- .\src\baseflight_startups\startup_stm32f10x_md_fy90q.s
-
printf.c
1
diff --git a/src/baseflight_startups/startup_stm32f10x_md_fy90q.s b/src/baseflight_startups/startup_stm32f10x_md_fy90q.s
deleted file mode 100644
index dd7e1376d8..0000000000
--- a/src/baseflight_startups/startup_stm32f10x_md_fy90q.s
+++ /dev/null
@@ -1,359 +0,0 @@
-;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
-;* File Name : startup_stm32f10x_md.s
-;* Author : MCD Application Team
-;* Version : V3.5.0
-;* Date : 11-March-2011
-;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM
-;* toolchain.
-;* This module performs:
-;* - Set the initial SP
-;* - Set the initial PC == Reset_Handler
-;* - Set the vector table entries with the exceptions ISR address
-;* - Configure the clock system
-;* - Branches to __main in the C library (which eventually
-;* calls main()).
-;* After Reset the CortexM3 processor is in Thread mode,
-;* priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>
-;*******************************************************************************
-; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
-; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
-; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
-; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
-; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
-; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
-;*******************************************************************************
-
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; Stack Configuration
-; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Stack_Size EQU 0x00001000
-
- AREA STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem SPACE Stack_Size
-__initial_sp
-
-
-; Heap Configuration
-; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Heap_Size EQU 0x00000200
-
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem SPACE Heap_Size
-__heap_limit
-
- PRESERVE8
- THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
- AREA RESET, DATA, READONLY
- EXPORT __Vectors
- EXPORT __Vectors_End
- EXPORT __Vectors_Size
-
-__Vectors DCD __initial_sp ; Top of Stack
- DCD Reset_Handler ; Reset Handler
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- ; External Interrupts
- DCD WWDG_IRQHandler ; Window Watchdog
- DCD PVD_IRQHandler ; PVD through EXTI Line detect
- DCD TAMPER_IRQHandler ; Tamper
- DCD RTC_IRQHandler ; RTC
- DCD FLASH_IRQHandler ; Flash
- DCD RCC_IRQHandler ; RCC
- DCD EXTI0_IRQHandler ; EXTI Line 0
- DCD EXTI1_IRQHandler ; EXTI Line 1
- DCD EXTI2_IRQHandler ; EXTI Line 2
- DCD EXTI3_IRQHandler ; EXTI Line 3
- DCD EXTI4_IRQHandler ; EXTI Line 4
- DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
- DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
- DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
- DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
- DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
- DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
- DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
- DCD ADC1_2_IRQHandler ; ADC1_2
- DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
- DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
- DCD CAN1_RX1_IRQHandler ; CAN1 RX1
- DCD CAN1_SCE_IRQHandler ; CAN1 SCE
- DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
- DCD TIM1_BRK_IRQHandler ; TIM1 Break
- DCD TIM1_UP_IRQHandler ; TIM1 Update
- DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
- DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
- DCD TIM2_IRQHandler ; TIM2
- DCD TIM3_IRQHandler ; TIM3
- DCD TIM4_IRQHandler ; TIM4
- DCD I2C1_EV_IRQHandler ; I2C1 Event
- DCD I2C1_ER_IRQHandler ; I2C1 Error
- DCD I2C2_EV_IRQHandler ; I2C2 Event
- DCD I2C2_ER_IRQHandler ; I2C2 Error
- DCD SPI1_IRQHandler ; SPI1
- DCD SPI2_IRQHandler ; SPI2
- DCD USART1_IRQHandler ; USART1
- DCD USART2_IRQHandler ; USART2
- DCD USART3_IRQHandler ; USART3
- DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
- DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
- DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
-__Vectors_End
-
-__Vectors_Size EQU __Vectors_End - __Vectors
-
- AREA |.text|, CODE, READONLY
-
-; Reset handler
-Reset_Handler PROC
- EXPORT Reset_Handler [WEAK]
- IMPORT __main
- IMPORT SystemInit
- LDR R0, =0x20004FF0
- LDR R1, =0xDEADBEEF
- LDR R2, [R0, #0]
- STR R0, [R0, #0] ; Invalidate
- CMP R2, R1
- BEQ Reboot_Loader
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__main
- BX R0
- ENDP
-
-RCC_APB2ENR EQU 0x40021018
-GPIO_AFIO_MASK EQU 0x00000015
-GPIOA_CRH EQU 0x40010804
-GPIOA_BRR EQU 0x40010814
-GPIOC_CRH EQU 0x40011004
-GPIOC_BRR EQU 0x40011014
-AFIO_MAPR EQU 0x40010004
-
-Reboot_Loader PROC
- EXPORT Reboot_Loader
-
- ; RCC Enable GPIOA+C+AFIO
- LDR R6, =RCC_APB2ENR
- LDR R0, =GPIO_AFIO_MASK
- STR R0, [R6]
- ; MAPR pt1
- LDR R0, =AFIO_MAPR
- LDR R1, [R0]
- BIC R1, R1, #0xF000000
- STR R1, [R0]
- ; MAPR pt2
- LSLS R1, R0, #9
- STR R1, [R0]
- ; GPIO A BRR
- LDR R4, =GPIOA_BRR
- MOVS R0, #0x8000
- STR R0, [R4]
- ; GPIO A CRL
- LDR R1, =GPIOA_CRH
- LDR R0, =0x34444444
- STR R0, [R1]
- ; GPIO C BRR
- LDR R4, =GPIOC_BRR
- MOVS R0, #0x1000
- STR R0, [R4]
- ; GPIO C CRL
- LDR R1, =GPIOC_CRH
- LDR R0, =0x44434444
- STR R0, [R1]
- ; Reboot to ROM
- LDR R0, =0x1FFFF000
- LDR SP,[R0, #0]
- LDR R0,[R0, #4]
- BX R0
- ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler PROC
- EXPORT NMI_Handler [WEAK]
- B .
- ENDP
-HardFault_Handler\
- PROC
- EXPORT HardFault_Handler [WEAK]
- B .
- ENDP
-MemManage_Handler\
- PROC
- EXPORT MemManage_Handler [WEAK]
- B .
- ENDP
-BusFault_Handler\
- PROC
- EXPORT BusFault_Handler [WEAK]
- B .
- ENDP
-UsageFault_Handler\
- PROC
- EXPORT UsageFault_Handler [WEAK]
- B .
- ENDP
-SVC_Handler PROC
- EXPORT SVC_Handler [WEAK]
- B .
- ENDP
-DebugMon_Handler\
- PROC
- EXPORT DebugMon_Handler [WEAK]
- B .
- ENDP
-PendSV_Handler PROC
- EXPORT PendSV_Handler [WEAK]
- B .
- ENDP
-SysTick_Handler PROC
- EXPORT SysTick_Handler [WEAK]
- B .
- ENDP
-
-Default_Handler PROC
-
- EXPORT WWDG_IRQHandler [WEAK]
- EXPORT PVD_IRQHandler [WEAK]
- EXPORT TAMPER_IRQHandler [WEAK]
- EXPORT RTC_IRQHandler [WEAK]
- EXPORT FLASH_IRQHandler [WEAK]
- EXPORT RCC_IRQHandler [WEAK]
- EXPORT EXTI0_IRQHandler [WEAK]
- EXPORT EXTI1_IRQHandler [WEAK]
- EXPORT EXTI2_IRQHandler [WEAK]
- EXPORT EXTI3_IRQHandler [WEAK]
- EXPORT EXTI4_IRQHandler [WEAK]
- EXPORT DMA1_Channel1_IRQHandler [WEAK]
- EXPORT DMA1_Channel2_IRQHandler [WEAK]
- EXPORT DMA1_Channel3_IRQHandler [WEAK]
- EXPORT DMA1_Channel4_IRQHandler [WEAK]
- EXPORT DMA1_Channel5_IRQHandler [WEAK]
- EXPORT DMA1_Channel6_IRQHandler [WEAK]
- EXPORT DMA1_Channel7_IRQHandler [WEAK]
- EXPORT ADC1_2_IRQHandler [WEAK]
- EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK]
- EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK]
- EXPORT CAN1_RX1_IRQHandler [WEAK]
- EXPORT CAN1_SCE_IRQHandler [WEAK]
- EXPORT EXTI9_5_IRQHandler [WEAK]
- EXPORT TIM1_BRK_IRQHandler [WEAK]
- EXPORT TIM1_UP_IRQHandler [WEAK]
- EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
- EXPORT TIM1_CC_IRQHandler [WEAK]
- EXPORT TIM2_IRQHandler [WEAK]
- EXPORT TIM3_IRQHandler [WEAK]
- EXPORT TIM4_IRQHandler [WEAK]
- EXPORT I2C1_EV_IRQHandler [WEAK]
- EXPORT I2C1_ER_IRQHandler [WEAK]
- EXPORT I2C2_EV_IRQHandler [WEAK]
- EXPORT I2C2_ER_IRQHandler [WEAK]
- EXPORT SPI1_IRQHandler [WEAK]
- EXPORT SPI2_IRQHandler [WEAK]
- EXPORT USART1_IRQHandler [WEAK]
- EXPORT USART2_IRQHandler [WEAK]
- EXPORT USART3_IRQHandler [WEAK]
- EXPORT EXTI15_10_IRQHandler [WEAK]
- EXPORT RTCAlarm_IRQHandler [WEAK]
- EXPORT USBWakeUp_IRQHandler [WEAK]
-
-WWDG_IRQHandler
-PVD_IRQHandler
-TAMPER_IRQHandler
-RTC_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_IRQHandler
-EXTI1_IRQHandler
-EXTI2_IRQHandler
-EXTI3_IRQHandler
-EXTI4_IRQHandler
-DMA1_Channel1_IRQHandler
-DMA1_Channel2_IRQHandler
-DMA1_Channel3_IRQHandler
-DMA1_Channel4_IRQHandler
-DMA1_Channel5_IRQHandler
-DMA1_Channel6_IRQHandler
-DMA1_Channel7_IRQHandler
-ADC1_2_IRQHandler
-USB_HP_CAN1_TX_IRQHandler
-USB_LP_CAN1_RX0_IRQHandler
-CAN1_RX1_IRQHandler
-CAN1_SCE_IRQHandler
-EXTI9_5_IRQHandler
-TIM1_BRK_IRQHandler
-TIM1_UP_IRQHandler
-TIM1_TRG_COM_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM4_IRQHandler
-I2C1_EV_IRQHandler
-I2C1_ER_IRQHandler
-I2C2_EV_IRQHandler
-I2C2_ER_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-USART3_IRQHandler
-EXTI15_10_IRQHandler
-RTCAlarm_IRQHandler
-USBWakeUp_IRQHandler
-
- B .
-
- ENDP
-
- ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
- IF :DEF:__MICROLIB
-
- EXPORT __initial_sp
- EXPORT __heap_base
- EXPORT __heap_limit
-
- ELSE
-
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
-
-__user_initial_stackheap
-
- LDR R0, = Heap_Mem
- LDR R1, =(Stack_Mem + Stack_Size)
- LDR R2, = (Heap_Mem + Heap_Size)
- LDR R3, = Stack_Mem
- BX LR
-
- ALIGN
-
- ENDIF
-
- END
-
-;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****
diff --git a/src/board.h b/src/board.h
index 077a6201de..cfc16333dd 100755
--- a/src/board.h
+++ b/src/board.h
@@ -176,22 +176,6 @@ typedef struct baro_t {
} baro_t;
// Hardware definitions and GPIO
-#ifdef FY90Q
- // FY90Q
-#define LED0_GPIO GPIOC
-#define LED0_PIN Pin_12
-#define LED1_GPIO GPIOA
-#define LED1_PIN Pin_15
-
-#define GYRO
-#define ACC
-#define LED0
-#define LED1
-
-#define SENSORS_SET (SENSOR_ACC)
-
-#else
-
#ifdef OLIMEXINO
// OLIMEXINO
@@ -238,7 +222,6 @@ typedef struct baro_t {
#define SENSORS_SET (SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
// #define PROD_DEBUG
-#endif
#endif
// Helpful macros
@@ -276,14 +259,6 @@ typedef struct baro_t {
#include "utils.h"
-#ifdef FY90Q
- // FY90Q
-#include "drv_adc.h"
-#include "drv_i2c.h"
-#include "drv_pwm.h"
-#include "drv_uart.h"
-#else
-
#ifdef OLIMEXINO
// OLIMEXINO
#include "drv_adc.h"
@@ -322,4 +297,3 @@ typedef struct baro_t {
#include "drv_hcsr04.h"
#endif
-#endif
diff --git a/src/drv_adc.h b/src/drv_adc.h
index ad43533076..788a74dea5 100755
--- a/src/drv_adc.h
+++ b/src/drv_adc.h
@@ -13,6 +13,3 @@ typedef struct drv_adc_config_t {
void adcInit(drv_adc_config_t *init);
uint16_t adcGetChannel(uint8_t channel);
-#ifdef FY90Q
-void adcSensorInit(sensor_t *acc, sensor_t *gyro);
-#endif
diff --git a/src/drv_adc_fy90q.c b/src/drv_adc_fy90q.c
deleted file mode 100644
index 07689ce0e7..0000000000
--- a/src/drv_adc_fy90q.c
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifdef FY90Q
-#include "board.h"
-
-#define ADC_CHANNELS 9
-
-volatile uint16_t adcData[ADC_CHANNELS] = { 0, };
-extern uint16_t acc_1G;
-
-static void adcAccRead(int16_t *accelData);
-static void adcAccAlign(int16_t *accelData);
-static void adcGyroRead(int16_t *gyroData);
-static void adcGyroAlign(int16_t *gyroData);
-static void adcDummyInit(void);
-
-void adcSensorInit(sensor_t *acc, sensor_t *gyro)
-{
- acc->init = adcDummyInit;
- acc->read = adcAccRead;
- acc->align = adcAccAlign;
-
- gyro->init = adcDummyInit;
- gyro->read = adcGyroRead;
- gyro->align = adcGyroAlign;
- gyro->scale = 1.0f;
-
- acc_1G = 376;
-}
-
-void adcCalibrateADC(ADC_TypeDef *ADCx, int n)
-{
- while (n > 0) {
- delay(5);
- // Enable ADC reset calibration register
- ADC_ResetCalibration(ADCx);
- // Check the end of ADC reset calibration register
- while(ADC_GetResetCalibrationStatus(ADCx));
- // Start ADC calibration
- ADC_StartCalibration(ADCx);
- // Check the end of ADC calibration
- while(ADC_GetCalibrationStatus(ADCx));
- n--;
- }
-}
-
-void adcInit(void)
-{
- ADC_InitTypeDef ADC_InitStructure;
- DMA_InitTypeDef DMA_InitStructure;
-
- // ADC assumes all the GPIO was already placed in 'AIN' mode
- DMA_DeInit(DMA1_Channel1);
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&adcData;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
- DMA_InitStructure.DMA_BufferSize = ADC_CHANNELS;
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
- DMA_InitStructure.DMA_Priority = DMA_Priority_High;
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel1, &DMA_InitStructure);
- /* Enable DMA1 channel1 */
- DMA_Cmd(DMA1_Channel1, ENABLE);
-
- ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
- ADC_InitStructure.ADC_ScanConvMode = ENABLE;
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStructure.ADC_NbrOfChannel = ADC_CHANNELS;
- ADC_Init(ADC1, &ADC_InitStructure);
-
- ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_28Cycles5); // GY_X
- ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_28Cycles5); // GY_Y
- ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_28Cycles5); // GY_Z
-
- ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, ADC_SampleTime_28Cycles5); // ACC_X
- ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 5, ADC_SampleTime_28Cycles5); // ACC_Y
- ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 6, ADC_SampleTime_28Cycles5); // ACC_Z
-
- ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 7, ADC_SampleTime_28Cycles5); // POT_ELE
- ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 8, ADC_SampleTime_28Cycles5); // POT_AIL
- ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 9, ADC_SampleTime_28Cycles5); // POT_RUD
-
- ADC_DMACmd(ADC1, ENABLE);
-
- ADC_Cmd(ADC1, ENABLE);
-
- // Calibrate ADC
- adcCalibrateADC(ADC1, 2);
-
- // Fire off ADC
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
-}
-
-static void adcAccRead(int16_t *accelData)
-{
- // ADXL335
- // 300mV/g
- // Vcc 3.0V
- accelData[0] = adcData[3];
- accelData[1] = adcData[4];
- accelData[2] = adcData[5];
-}
-
-static void adcAccAlign(int16_t *accelData)
-{
- // align OK
-}
-
-static void adcGyroRead(int16_t *gyroData)
-{
- // Vcc: 3.0V
- // Pitch/Roll: LPR550AL, 2000dps mode.
- // 0.5mV/dps
- // Zero-rate: 1.23V
- // Yaw: LPY550AL, 2000dps mode.
- // 0.5mV/dps
- // Zero-rate: 1.23V
-
- // Need to match with: 14.375lsb per dps
- // 12-bit ADC
-
- gyroData[0] = adcData[0] * 2;
- gyroData[1] = adcData[1] * 2;
- gyroData[2] = adcData[2] * 2;
-}
-
-static void adcGyroAlign(int16_t *gyroData)
-{
- // align OK
-}
-
-static void adcDummyInit(void)
-{
- // nothing to init here
-}
-
-uint16_t adcGetBattery(void)
-{
- return 0;
-}
-#endif
diff --git a/src/drv_pwm_fy90q.c b/src/drv_pwm_fy90q.c
deleted file mode 100644
index b1236f9865..0000000000
--- a/src/drv_pwm_fy90q.c
+++ /dev/null
@@ -1,344 +0,0 @@
-#ifdef FY90Q
-#include "board.h"
-
-#define PULSE_1MS (1000) // 1ms pulse width
-// #define PULSE_PERIOD (2500) // pulse period (400Hz)
-// #define PULSE_PERIOD_SERVO_DIGITAL (5000) // pulse period for digital servo (200Hz)
-// #define PULSE_PERIOD_SERVO_ANALOG (20000) // pulse period for analog servo (50Hz)
-
-// Forward declaration
-static void pwmIRQHandler(TIM_TypeDef *tim);
-static void ppmIRQHandler(TIM_TypeDef *tim);
-
-// external vars (ugh)
-extern int16_t failsafeCnt;
-
-// local vars
-static struct TIM_Channel {
- TIM_TypeDef *tim;
- uint16_t channel;
- uint16_t cc;
-} Channels[] = {
- { TIM2, TIM_Channel_1, TIM_IT_CC1 },
- { TIM2, TIM_Channel_2, TIM_IT_CC2 },
- { TIM2, TIM_Channel_3, TIM_IT_CC3 },
- { TIM2, TIM_Channel_4, TIM_IT_CC4 },
- { TIM3, TIM_Channel_1, TIM_IT_CC1 },
- { TIM3, TIM_Channel_2, TIM_IT_CC2 },
- { TIM3, TIM_Channel_3, TIM_IT_CC3 },
- { TIM3, TIM_Channel_4, TIM_IT_CC4 },
-};
-
-static volatile uint16_t *OutputChannels[] = {
- &(TIM4->CCR1),
- &(TIM4->CCR2),
- &(TIM4->CCR3),
- &(TIM4->CCR4),
- // Extended use during CPPM input (TODO)
- &(TIM3->CCR1),
- &(TIM3->CCR2),
- &(TIM3->CCR3),
- &(TIM3->CCR4),
-};
-
-static struct PWM_State {
- uint8_t state;
- uint16_t rise;
- uint16_t fall;
- uint16_t capture;
-} Inputs[8] = { { 0, } };
-
-static TIM_ICInitTypeDef TIM_ICInitStructure = { 0, };
-static bool usePPMFlag = false;
-static uint8_t numOutputChannels = 0;
-
-void TIM2_IRQHandler(void)
-{
- if (usePPMFlag)
- ppmIRQHandler(TIM2);
- else
- pwmIRQHandler(TIM2);
-}
-
-static void ppmIRQHandler(TIM_TypeDef *tim)
-{
- uint16_t diff;
- static uint16_t now;
- static uint16_t last = 0;
- static uint8_t chan = 0;
- static uint8_t GoodPulses;
-
- if (TIM_GetITStatus(tim, TIM_IT_CC1) == SET) {
- last = now;
- now = TIM_GetCapture1(tim);
- rcActive = true;
- }
-
- TIM_ClearITPendingBit(tim, TIM_IT_CC1);
-
- if (now > last) {
- diff = (now - last);
- } else {
- diff = ((0xFFFF - last) + now);
- }
-
- if (diff > 4000) {
- chan = 0;
- } else {
- if (diff > PULSE_MIN && diff < PULSE_MAX && chan < 8) { // 750 to 2250 ms is our 'valid' channel range
- Inputs[chan].capture = diff;
- if (chan < 4 && diff > FAILSAFE_DETECT_TRESHOLD)
- GoodPulses |= (1 << chan); // if signal is valid - mark channel as OK
- if (GoodPulses == 0x0F) { // If first four chanells have good pulses, clear FailSafe counter
- GoodPulses = 0;
- if (failsafeCnt > 20)
- failsafeCnt -= 20;
- else
- failsafeCnt = 0;
- }
- }
- chan++;
- failsafeCnt = 0;
- }
-}
-
-static void pwmIRQHandler(TIM_TypeDef *tim)
-{
- uint8_t i;
- uint16_t val = 0;
-
- for (i = 0; i < 8; i++) {
- struct TIM_Channel channel = Channels[i];
- struct PWM_State *state = &Inputs[i];
-
- if (channel.tim == tim && (TIM_GetITStatus(tim, channel.cc) == SET)) {
- TIM_ClearITPendingBit(channel.tim, channel.cc);
-
- switch (channel.channel) {
- case TIM_Channel_1:
- val = TIM_GetCapture1(channel.tim);
- break;
- case TIM_Channel_2:
- val = TIM_GetCapture2(channel.tim);
- break;
- case TIM_Channel_3:
- val = TIM_GetCapture3(channel.tim);
- break;
- case TIM_Channel_4:
- val = TIM_GetCapture4(channel.tim);
- break;
- }
-
- if (state->state == 0)
- state->rise = val;
- else
- state->fall = val;
-
- if (state->state == 0) {
- // switch states
- state->state = 1;
-
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
- TIM_ICInitStructure.TIM_Channel = channel.channel;
- TIM_ICInit(channel.tim, &TIM_ICInitStructure);
- } else {
- // compute capture
- if (state->fall > state->rise)
- state->capture = (state->fall - state->rise);
- else
- state->capture = ((0xffff - state->rise) + state->fall);
-
- // switch state
- state->state = 0;
-
- // ping failsafe
- failsafeCnt = 0;
-
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
- TIM_ICInitStructure.TIM_Channel = channel.channel;
- TIM_ICInit(channel.tim, &TIM_ICInitStructure);
- }
- }
- }
-}
-
-static void pwmInitializeInput(bool usePPM)
-{
- GPIO_InitTypeDef GPIO_InitStructure = { 0, };
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = { 0, };
- NVIC_InitTypeDef NVIC_InitStructure = { 0, };
- uint8_t i;
-
- // Input pins
- if (usePPM) {
- // Configure TIM2_CH1 for PPM input
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- // Input timer on TIM2 only for PPM
- NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- // TIM2 timebase
- TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
- TIM_TimeBaseStructure.TIM_Period = 0xffff;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
-
- // Input capture on TIM2_CH1 for PPM
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
- TIM_ICInitStructure.TIM_ICFilter = 0x0;
- TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
- TIM_ICInit(TIM2, &TIM_ICInitStructure);
-
- // TIM2_CH1 capture compare interrupt enable
- TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
- TIM_Cmd(TIM2, ENABLE);
-
- // configure number of PWM outputs, in PPM mode, we use bottom 4 channels more more motors
- numOutputChannels = 10;
- } else {
- // Configure TIM2 all 4 channels
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- // TODO Configure EXTI4 1 channel
-
- // Input timers on TIM2 for PWM
- NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- // TIM2 timebase
- TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
- TIM_TimeBaseStructure.TIM_Period = 0xffff;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
-
- // PWM Input capture
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
- TIM_ICInitStructure.TIM_ICFilter = 0x0;
-
- for (i = 0; i < 4; i++) {
- TIM_ICInitStructure.TIM_Channel = Channels[i].channel;
- TIM_ICInit(Channels[i].tim, &TIM_ICInitStructure);
- }
-
- // TODO EXTI4
-
- TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
- // TODO EXTI4
- TIM_Cmd(TIM2, ENABLE);
-
- // In PWM input mode, all 4 channels are wasted
- numOutputChannels = 4;
- }
-}
-
-bool pwmInit(drv_pwm_config_t *init)
-{
- GPIO_InitTypeDef GPIO_InitStructure = { 0, };
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = { 0, };
- TIM_OCInitTypeDef TIM_OCInitStructure = { 0, };
-
- uint8_t i;
-
- // Inputs
-
- // RX1 TIM2_CH1 PA0 [also PPM] [also used for throttle calibration]
- // RX2 TIM2_CH2 PA1
- // RX3 TIM2_CH3 PA2 [also UART2_TX]
- // RX4 TIM2_CH4 PA3 [also UART2_RX]
- // RX5 TIM3_CH1 PA6 [also ADC_IN6]
- // RX6 TIM3_CH2 PA7 [also ADC_IN7]
- // RX7 TIM3_CH3 PB0 [also ADC_IN8]
- // RX8 TIM3_CH4 PB1 [also ADC_IN9]
-
- // Outputs
- // PWM1 TIM1_CH1 PA8
- // PWM2 TIM1_CH4 PA11
- // PWM3 TIM4_CH1 PB6 [also I2C1_SCL]
- // PWM4 TIM4_CH2 PB7 [also I2C1_SDA]
- // PWM5 TIM4_CH3 PB8
- // PWM6 TIM4_CH4 PB9
-
- // use PPM or PWM input
- usePPMFlag = init->usePPM;
-
- // preset channels to center
- for (i = 0; i < 8; i++)
- Inputs[i].capture = 1500;
-
- // Timers run at 1mhz.
- // TODO: clean this shit up. Make it all dynamic etc.
- if (init->enableInput)
- pwmInitializeInput(usePPMFlag);
-
- // Output pins (4x)
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- // Output timer
- TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
-
- TIM_TimeBaseStructure.TIM_Period = (1000000 / init->motorPwmRate) - 1;
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
-
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
- TIM_OCInitStructure.TIM_Pulse = PULSE_1MS;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
- TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
-
- // PWM1,2,3,4
- TIM_OC1Init(TIM4, &TIM_OCInitStructure);
- TIM_OC2Init(TIM4, &TIM_OCInitStructure);
- TIM_OC3Init(TIM4, &TIM_OCInitStructure);
- TIM_OC4Init(TIM4, &TIM_OCInitStructure);
- TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
- TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
- TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
- TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
-
- TIM_Cmd(TIM4, ENABLE);
- TIM_CtrlPWMOutputs(TIM4, ENABLE);
- TIM_OC1PreloadConfig (TIM4, TIM_OCPreload_Enable);
-
- // turn on more motor outputs if we're using ppm / not using pwm input
- if (!init->enableInput || init->usePPM) {
- // TODO
- }
-
- return false;
-}
-
-void pwmWrite(uint8_t channel, uint16_t value)
-{
- if (channel < numOutputChannels)
- *OutputChannels[channel] = value;
-}
-
-uint16_t pwmRead(uint8_t channel)
-{
- return Inputs[channel].capture;
-}
-#endif
diff --git a/src/drv_system.c b/src/drv_system.c
index 6d92d81beb..4607170921 100755
--- a/src/drv_system.c
+++ b/src/drv_system.c
@@ -121,9 +121,7 @@ void systemInit(bool overclock)
SysTick_Config(SystemCoreClock / 1000);
// Configure the rest of the stuff
-#ifndef FY90Q
i2cInit(I2C2);
-#endif
spiInit();
// sleep for 100ms
diff --git a/src/sensors.c b/src/sensors.c
index b2e0385bce..4a952adb69 100755
--- a/src/sensors.c
+++ b/src/sensors.c
@@ -20,15 +20,6 @@ sensor_t gyro; // gyro access functions
baro_t baro; // barometer access functions
uint8_t accHardware = ACC_DEFAULT; // which accel chip is used/detected
-#ifdef FY90Q
-// FY90Q analog gyro/acc
-bool sensorsAutodetect(void)
-{
- adcSensorInit(&acc, &gyro);
- return true;
-}
-#else
-// AfroFlight32 i2c sensors
bool sensorsAutodetect(void)
{
int16_t deg, min;
@@ -133,7 +124,6 @@ retry:
return true;
}
-#endif
uint16_t batteryAdcToVoltage(uint16_t src)
{