chore: use settings from radio JSON files instead of hal.h (#7411)

Co-authored-by: 3djc <3djc@gh.com>
This commit is contained in:
philmoz
2026-07-13 10:15:50 +10:00
committed by GitHub
co-authored by 3djc
parent 445c09f662
commit f3cabd42f7
100 changed files with 3290 additions and 2193 deletions
@@ -128,6 +128,8 @@ if(NOT NATIVE_BUILD)
${STM32_DRIVER_DIR}/stm32_i2c_driver.cpp
)
add_dependencies(stm32_drivers hal_settings)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:stm32_drivers>)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:stm32_drivers_w_dbg_fw>)
@@ -85,7 +85,7 @@ void rotaryEncoderCheck()
};
#endif
uint8_t pins = ROTARY_ENCODER_POSITION();
uint8_t pins = ROTARY_ENCODER_POSITION;
// No change - do nothing
if (pins == lastPins) {
@@ -230,7 +230,7 @@ void rotaryEncoderInit()
NVIC_SetPriority(ROTARY_ENCODER_TIMER_IRQn, 7);
// Get initial position
lastPins = ROTARY_ENCODER_POSITION();
lastPins = ROTARY_ENCODER_POSITION;
skipUntilDetent = !ON_DETENT(lastPins);
}
+1 -1
View File
@@ -266,7 +266,7 @@ void boardOff()
rgbLedClearAll();
#endif
#if defined(STATUS_LEDS) && !defined(BOOT)
#if STATUS_LEDS && !defined(BOOT)
ledOff();
#endif
backlightEnable(0);
+3 -92
View File
@@ -21,11 +21,7 @@
#pragma once
#define CPU_FREQ 168000000
#define PERI1_FREQUENCY 42000000
#define PERI2_FREQUENCY 84000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
#define TELEMETRY_EXTI_PRIO 0 // required for soft serial
@@ -33,7 +29,7 @@
#define ROTARY_ENCODER_GPIO GPIOH
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_11 // PH.11
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_10 // PH.10
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)
#define ROTARY_ENCODER_POSITION ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_11
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_10
#if !defined(USE_EXTI15_10_IRQ)
@@ -143,22 +139,6 @@
#pragma message "PCBREV_TOUCH_PULL_TYPE not defined, defaulting to GPIO_IN_PD"
#endif
// Led
#define STATUS_LEDS
#if defined(PCBX12S)
#define LED_GPIO GPIO_PIN(GPIOI, 5) // PI.05
#elif defined(RADIO_T15)
#define LED_RED_GPIO GPIO_PIN(GPIOI, 14) //PI.14
#define LED_GREEN_GPIO GPIO_PIN(GPIOC, 13) //PC.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 3) //PE.03
#elif defined(PCBX10)
#define LED_RED_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#if !defined(MANUFACTURER_FRSKY) // no green on X10/X10 Express
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#endif
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 5) // PE.05
#endif
// Customisable switches leds
#if defined(RADIO_T15)
#define FSLED_GPIO_PIN_1 GPIO_PIN(GPIOA, 15) //PA.15
@@ -300,19 +280,12 @@
#define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_2 // PE.02
#define LCD_SPI_MISO_GPIO_PIN LL_GPIO_PIN_5 // PE.05
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_6 // PE.06
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#else
#if defined(PCBX12S)
#define LCD_GPIO_NRST GPIO_PIN(GPIOF, 10) // PF.10
#elif defined(PCBX10)
#define LCD_GPIO_NRST GPIO_PIN(GPIOI, 10) // PI.10
#endif
#if defined(PCBX10) && !defined(RADIO_T18) && !defined(RADIO_V16)
#define LCD_VERTICAL_INVERT
#endif
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#endif
// Backlight
@@ -501,28 +474,7 @@
#endif
// Haptic
#define HAPTIC_PWM
#if defined(PCBX12S)
#define HAPTIC_GPIO GPIO_PIN(GPIOA, 2) // PA.02
#define HAPTIC_GPIO_TIMER TIM9
#define HAPTIC_GPIO_AF GPIO_AF3
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC1E
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1
#elif defined(RADIO_T15) // TIM2_CH1
#define HAPTIC_GPIO GPIO_PIN(GPIOA, 5) // PA.05
#define HAPTIC_GPIO_TIMER TIM2
#define HAPTIC_GPIO_AF GPIO_AF1
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC1E | TIM_CCER_CC1NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1
#elif defined(PCBX10)
#define HAPTIC_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#define HAPTIC_GPIO_TIMER TIM9
#define HAPTIC_GPIO_AF GPIO_AF3
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
#if !defined(PCBX12S) && !defined(RADIO_T15) && defined(PCBX10)
// FlySky Hall Sticks
#define FLYSKY_HALL_SERIAL_USART UART4
#define FLYSKY_HALL_DMA_Channel LL_DMA_CHANNEL_4
@@ -534,24 +486,6 @@
#define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4
#endif
#if defined(RADIO_V16)
// LED Strip
#define LED_STRIP_LENGTH 40
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 34
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.10 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1/2
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA2
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_5
#define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#endif
// Internal PXX1 Module:
// -> let's assume all internal XJT modules used are either X10 or X12S type
#define EXTERNAL_ANTENNA
@@ -691,17 +625,6 @@
#define TRAINER_MODULE_CPPM_GPIO_AF LL_GPIO_AF_2
#endif
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM13
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_UP_TIM13_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_UP_TIM13_IRQHandler
// Bluetooth
#define STORAGE_BLUETOOTH
#if defined(BLUETOOTH)
@@ -744,15 +667,3 @@
// SDRAM
#define SDRAM_BANK2
#if defined(RADIO_T15)
#define LCD_W 480
#define LCD_H 320
#else
#define LCD_W 480
#define LCD_H 272
#endif
#define LCD_PHYS_H LCD_H
#define LCD_PHYS_W LCD_W
#define LCD_DEPTH 16
+4 -4
View File
@@ -58,7 +58,7 @@
static LTDC_HandleTypeDef hltdc;
static void* initialFrameBuffer = nullptr;
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
typedef uint16_t pixel_t;
static pixel_t _LCD_BUF_1[DISPLAY_BUFFER_SIZE] __SDRAM;
static pixel_t _LCD_BUF_2[DISPLAY_BUFFER_SIZE] __SDRAM;
@@ -137,7 +137,7 @@ static void _update_frame_buffer_addr(uint16_t* addr)
static void startLcdRefresh(lv_disp_drv_t *disp_drv, uint16_t *buffer,
const rect_t &copy_area)
{
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
#if defined(RADIO_F16)
if(hardwareOptions.pcbrev > 0) {
// Direct mode
@@ -382,7 +382,7 @@ void LCD_LayerInit()
layer.ImageHeight = LCD_PHYS_H;
/* Start Address configuration : the LCD Frame buffer is defined on SDRAM w/ Offset */
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
intptr_t layer_address;
#if defined(RADIO_F16)
if (hardwareOptions.pcbrev > 0)
@@ -423,7 +423,7 @@ void LCD_Init(void)
extern "C"
void lcdInit()
{
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
// Clear buffer first
memset(_LCD_BUF_1, 0, sizeof(_LCD_BUF_1));
memset(_LCD_BUF_2, 0, sizeof(_LCD_BUF_2));
+1 -87
View File
@@ -22,12 +22,7 @@
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 400000000
#define PERI1_FREQUENCY 100000000
#define PERI2_FREQUENCY 100000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
/* Timers Allocation:
* TIM3 = Haptic / Backlight
@@ -107,12 +102,6 @@
#define LCD_SPI_MISO GPIO_PIN(GPIOG, 9)
#define LCD_SPI_BAUD 50000000
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOB, 03) // TIM2_CH2
#define BACKLIGHT_TIMER TIM2
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_MAX_FREQ 80000000U // 80 MHz
#define QSPI_CLK_GPIO GPIO_PIN(GPIOB, 2)
@@ -172,13 +161,6 @@
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic: TIM3_CH2
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOA, 15) // PA.15
#define HAPTIC_GPIO_TIMER TIM2
#define HAPTIC_GPIO_AF GPIO_AF1
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART USART2
@@ -191,30 +173,6 @@
#define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4
#define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_USART2_RX
// TODO LED Strip PF.06
// LED Strip
#define LED_STRIP_LENGTH 14
#define BLING_LED_STRIP_START 10
#define BLING_LED_STRIP_LENGTH 4
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 8
#define CFS_LEDS_PER_SWITCH 2
#define LED_STRIP_GPIO GPIO_PIN(GPIOF, 06) // PF.06 / TIM16_CH1
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1/2/16/17
#define LED_STRIP_TIMER TIM16
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM16_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define RGB_LED_OFFSET 10
#define STATUS_LEDS
#define LED_CHARGING_START 0
#define LED_CHARGING_END 13
@@ -286,48 +244,4 @@
#define TOUCH_I2C_BUS I2C_Bus_1
#define TOUCH_I2C_CLK_RATE 100000
// Rotary Encoder
#define ROTARY_ENCODER_NAVIGATION
#define ROTARY_ENCODER_GPIO GPIOA
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_6 // PA.06
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_7 // PA.07
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 6) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_6
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_7
// port extender interrupt
#if !defined(USE_EXTI9_5_IRQ)
#define USE_EXTI9_5_IRQ
#define EXTI9_5_IRQ_Priority 5
#endif
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE6
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
// IMU / Gyro
#define IMU_I2C_BUS I2C_Bus_2
#define IMU_I2C_ADDRESS 0x6A
#define LCD_W 320
#define LCD_H 240
#define LCD_PHYS_W LCD_W
#define LCD_PHYS_H LCD_H
#define LCD_DEPTH 16
#endif // _HAL_H_
-1
View File
@@ -203,7 +203,6 @@ add_dependencies(board_bl ${BITMAPS_TARGET})
if(PCBREV STREQUAL NB4P)
target_sources(board_bl PUBLIC
${CMAKE_CURRENT_BINARY_DIR}/stm32_adc_inputs.inc
boards/generic_stm32/analog_inputs.cpp
)
endif()
+1 -102
View File
@@ -21,13 +21,7 @@
#pragma once
#define CPU_FREQ 168000000
// HSI is at 168Mhz (over-drive is not enabled!)
#define PERI1_FREQUENCY 42000000
#define PERI2_FREQUENCY 84000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
/* Timers Allocation:
* TIM1 = Haptic
@@ -252,41 +246,11 @@
#define LCD_SPI_SCK_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define LCD_SPI_MISO_GPIO GPIO_PIN(GPIOE, 5) // PE.05
#define LCD_SPI_MOSI_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
// Backlight
// TODO TIM3, TIM8, TIM14, review the channel in backlight_driver.cpp according to the chosen timer
#define BACKLIGHT_RCC_APB2Periph 0
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 15) // PA.15
#define BACKLIGHT_TIMER TIM2
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
//used in BOOTLOADER
#define SERIAL_RCC_AHB1Periph 0
#define SERIAL_RCC_APB1Periph 0
#if defined(RADIO_NB4P)
// Rotary Encoder
#define ROTARY_ENCODER_GPIO GPIOH
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_11 // PH.11
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_10 // PH.10
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_11
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_10
#if !defined(USE_EXTI15_10_IRQ)
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5
#endif
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTH
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE11
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE10
#define ROTARY_ENCODER_TIMER TIM13
#define ROTARY_ENCODER_TIMER_IRQn TIM8_UP_TIM13_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM8_UP_TIM13_IRQHandler
#endif
#if defined(RADIO_NV14_FAMILY) || defined(RADIO_PL18U)
// SD card
#if defined(RADIO_PL18U)
@@ -389,25 +353,6 @@
#define EXTI9_5_IRQ_Priority 9
#endif
// Haptic: TIM1_CH1
#if defined(RADIO_NB4P)
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 0) // PB.00
#define HAPTIC_GPIO_TIMER TIM1
#define HAPTIC_GPIO_AF GPIO_AF1
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2NE
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
#else
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOA, 8) // PA.08
#define HAPTIC_GPIO_TIMER TIM1
#define HAPTIC_GPIO_AF GPIO_AF1
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC1E | TIM_CCER_CC1NE
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1
#endif
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART UART4
#define FLYSKY_HALL_DMA_Channel LL_DMA_CHANNEL_4
@@ -424,26 +369,6 @@
#define FLYSKY_HALL_DMA_Stream_RX LL_DMA_STREAM_2
#define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4
// LED Strip
#if !defined(RADIO_NV14_FAMILY)
#define LED_STRIP_LENGTH 4
#define BLING_LED_STRIP_START 0
#define BLING_LED_STRIP_LENGTH 4
#define LED_STRIP_GPIO GPIO_PIN(GPIOH, 12) // PH.12 / TIM5_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_2 // TIM3/4/5
#define LED_STRIP_TIMER TIM5
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#endif
// Internal Module
#if defined(RADIO_PL18) || defined(RADIO_PL18U)
#if defined(RADIO_PL18U)
@@ -603,34 +528,8 @@
#define BT_CMD_MODE_GPIO GPIO_PIN(GPIOH, 6) // PH.06
#endif
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
// SDRAM
#define SDRAM_BANK1
#if defined(RADIO_PL18U)
#define SDRAM_32MB
#endif
// LCD Settings
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
#define LCD_W 320
#define LCD_H 480
#else
#define LCD_W 480
#define LCD_H 320
#endif
#define LCD_PHYS_W 320
#define LCD_PHYS_H 480
#define LCD_DEPTH 16
#define LCD_CONTRAST_DEFAULT 20
+2 -11
View File
@@ -40,17 +40,6 @@ set(SIMU_DRIVERS
abnormal_reboot.cpp
)
set(HW_DESC_JSON ${FLAVOUR}.json)
AddHWGenTarget(${HW_DESC_JSON} simu_keys simu_keys.inc)
AddHWGenTarget(${HW_DESC_JSON} simu_switches simu_switches.inc)
AddHWGenTarget(${HW_DESC_JSON} hal_adc_inputs hal_adc_inputs.inc)
set(SIMU_DRIVERS ${SIMU_DRIVERS}
${CMAKE_CURRENT_BINARY_DIR}/simu_keys.inc
${CMAKE_CURRENT_BINARY_DIR}/simu_switches.inc
${CMAKE_CURRENT_BINARY_DIR}/hal_adc_inputs.inc
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# Pack all simu driver sources into an object lib
@@ -58,6 +47,8 @@ add_library(simu_drivers OBJECT EXCLUDE_FROM_ALL
${SIMU_DRIVERS}
)
add_dependencies(simu_drivers simu_keys simu_switches hal_settings hal_keys hal_adc_inputs lua_inputs lua_mixsrc lua_keys yaml_inputs)
get_property(SIMU_SRC_OPTIONS
TARGET radiolib_native
PROPERTY INTERFACE_COMPILE_OPTIONS
+3 -3
View File
@@ -53,7 +53,7 @@ void lcdRefresh()
#include <lvgl/lvgl.h>
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
static pixel_t _LCD_BUF1[DISPLAY_BUFFER_SIZE] __SDRAM;
static pixel_t _LCD_BUF2[DISPLAY_BUFFER_SIZE] __SDRAM;
@@ -98,7 +98,7 @@ pixel_t* simuLcdBuf = nullptr;
static void simuRefreshLcd(lv_disp_drv_t * disp_drv, uint16_t *buffer, const rect_t& copy_area)
{
#if !defined(LCD_VERTICAL_INVERT) // rename into "Use direct mode" ???
#if !LCD_VERTICAL_INVERT // rename into "Use direct mode" ???
// Direct mode: driver flush is called on final LVGL flush
// simply set LVGL's buffer as our current frame buffer
@@ -162,7 +162,7 @@ void lcdSetInitalFrameBuffer(void*) {}
void lcdInit()
{
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
memset(_LCD_BUF1, 0, sizeof(_LCD_BUF1));
memset(_LCD_BUF2, 0, sizeof(_LCD_BUF2));
#endif
+1 -90
View File
@@ -36,13 +36,7 @@
// - Ext. Mod. TIM4_UP: DMA2 stream 6
//
#define CPU_FREQ 400000000
#define PERI1_FREQUENCY 100000000
#define PERI2_FREQUENCY 100000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
#define ADC_VREF_PREC2 329
@@ -126,14 +120,6 @@
#define LCD_SPI_GPIO GPIOE
#define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_4 // PE.04
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_3 // PE.03
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOC, 06) // TIM3_CH1
#define BACKLIGHT_TIMER TIM3
#define BACKLIGHT_GPIO_AF GPIO_AF2
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_MAX_FREQ 80000000U // 80 MHz
@@ -206,15 +192,6 @@
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic: TIM3_CH2
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 5) // PB.05
#define HAPTIC_GPIO_TIMER TIM3
#define HAPTIC_GPIO_AF GPIO_AF2
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART USART2
@@ -227,25 +204,6 @@
#define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4
#define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_USART2_RX
// LED Strip
#define LED_STRIP_LENGTH 24
#define BLING_LED_STRIP_START 0
#define BLING_LED_STRIP_LENGTH 12
#define CFS_LED_STRIP_START 12
#define CFS_LED_STRIP_LENGTH 12
#define CFS_LEDS_PER_SWITCH 2
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 15) // PA.15 / TIM2_CH1
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1/2/16/17
#define LED_STRIP_TIMER TIM2
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM2_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define LED_CHARGING_START 12
#define LED_CHARGING_END 23
@@ -332,50 +290,3 @@
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5
#endif
#define IMU_I2C_BUS I2C_Bus_1
#define IMU_I2C_ADDRESS 0x6A
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_INVERTED
#define ROTARY_ENCODER_GPIO GPIOG
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_2 // PG.02
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_3 // PG.03
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 2) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_2
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_3
#if !defined(USE_EXTI2_IRQ)
#define USE_EXTI2_IRQ
#define EXTI2_IRQ_Priority 5
#endif
#if !defined(USE_EXTI3_IRQ)
#define USE_EXTI3_IRQ
#define EXTI3_IRQ_Priority 5
#endif
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTG
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE2
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE3
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LCD_W 480
#define LCD_H 320
#define LCD_PHYS_W LCD_H
#define LCD_PHYS_H LCD_W
#define LCD_DEPTH 16
+1 -160
View File
@@ -66,12 +66,7 @@ USART6: EXTMODULE_USART
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 480000000
#define PERI1_FREQUENCY 120000000
#define PERI2_FREQUENCY 120000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
// Keys
#define KEYS_GPIO_REG_PAGEDN GPIOI
@@ -112,69 +107,6 @@ USART6: EXTMODULE_USART
#define TRIMS_GPIO_REG_RVU GPIOB
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15
// Switches
#define SWITCHES_GPIO_REG_A_H GPIOB
#define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_0 // PB.00
#define SWITCHES_GPIO_REG_A_L GPIOC
#define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_4 // PC.04
#define SWITCHES_A_INVERTED
#define SWITCHES_GPIO_REG_B_H GPIOD
#define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_4 // PD.04
#define SWITCHES_GPIO_REG_B_L GPIOJ
#define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_7 // PJ.07
#define SWITCHES_B_INVERTED
#define SWITCHES_GPIO_REG_C_H GPIOH
#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_3 // PH.03
#define SWITCHES_GPIO_REG_C_L GPIOJ
#define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_0 // PJ.00
#define SWITCHES_C_INVERTED
#define SWITCHES_GPIO_REG_D_H GPIOJ
#define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_14 // PJ.14
#define SWITCHES_GPIO_REG_D_L GPIOH
#define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_15 // PH.15
#define SWITCHES_D_INVERTED
#define SWITCHES_GPIO_REG_E GPIOE
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_5 // PE.05
#define SWITCHES_GPIO_REG_F GPIOA
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_15 // PA.15
// function switches
//SW1
#define FUNCTION_SWITCH_1 SG
#define SWITCHES_GPIO_REG_G GPIOH
#define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_11 // PH.11
#define SWITCHES_G_CFS_IDX 0
//SW2
#define FUNCTION_SWITCH_2 SH
#define SWITCHES_GPIO_REG_H GPIOH
#define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_9 // PH.09
#define SWITCHES_H_CFS_IDX 1
//SW3
#define FUNCTION_SWITCH_3 SI
#define SWITCHES_GPIO_REG_I GPIOH
#define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_10 // PH.10
#define SWITCHES_I_CFS_IDX 2
//SW4
#define FUNCTION_SWITCH_4 SJ
#define SWITCHES_GPIO_REG_J GPIOH
#define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_13 // PH.123
#define SWITCHES_J_CFS_IDX 3
//SW5
#define FUNCTION_SWITCH_5 SK
#define SWITCHES_GPIO_REG_K GPIOH
#define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_14 // PH.14
#define SWITCHES_K_CFS_IDX 4
//SW6
#define FUNCTION_SWITCH_6 SL
#define SWITCHES_GPIO_REG_L GPIOH
#define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_12 // PH.12
#define SWITCHES_L_CFS_IDX 5
// ADC
#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 ADC1_INP16
#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 ADC12_INP15
@@ -270,19 +202,10 @@ USART6: EXTMODULE_USART
#define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_3
#define LCD_SPI_MISO_GPIO_PIN LL_GPIO_PIN_4
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_5
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#define LCD_NRST_GPIO GPIOI
#define LCD_NRST_GPIO_PIN LL_GPIO_PIN_15
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 5) // TIM2_CH1
#define BACKLIGHT_TIMER TIM2
#define BACKLIGHT_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_CLK_GPIO GPIO_PIN(GPIOF, 10)
#define QSPI_CLK_GPIO_AF GPIO_AF9
@@ -334,41 +257,6 @@ USART6: EXTMODULE_USART
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOE, 6) // TIM15_CH2
#define HAPTIC_GPIO_TIMER TIM15
#define HAPTIC_GPIO_AF GPIO_AF4
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// LED Strip
#define LED_STRIP_LENGTH 7 // 6POS + 1 common (many leds in //)
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 1
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 6
#define CFS_LEDS_PER_SWITCH 1
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.00 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1_CH3
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM1_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOA, 8)
#define LED_GREEN_GPIO GPIO_PIN(GPIOJ, 13)
#define LED_BLUE_GPIO GPIO_PIN(GPIOG, 7)
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOI, 1)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOD, 7)
@@ -449,53 +337,6 @@ USART6: EXTMODULE_USART
#define EXTI15_10_IRQ_Priority 9
#endif
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_GPIO_A GPIOA
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_6
#define ROTARY_ENCODER_GPIO_B GPIOA
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_7
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO_A->IDR >> 6) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 6) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_6
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_7
#if !defined(USE_EXTI9_5_IRQ)
#define USE_EXTI9_5_IRQ
#define EXTI9_5_IRQ_Priority 9
#endif
#define ROTARY_ENCODER_EXTI_PORT_A LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_PORT_B LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE6
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LANDSCAPE_LCD true
#define PORTRAIT_LCD false
#define LANDSCAPE_LCD_SML false
#define LANDSCAPE_LCD_STD true
#define LANDSCAPE_LCD_LRG false
#define LCD_W 480
#define LCD_H 320
#define LCD_PHYS_W LCD_W
#define LCD_PHYS_H LCD_H
#define LCD_DEPTH 16
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_
+1 -89
View File
@@ -59,12 +59,7 @@ TIM17: ROTARY_ENCODER_TIMER
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 480000000
#define PERI1_FREQUENCY 120000000
#define PERI2_FREQUENCY 120000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
#define ADC_VREF_PREC2 330
@@ -179,15 +174,6 @@ TIM17: ROTARY_ENCODER_TIMER
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOE, 6) // TIM15_CH2
#define HAPTIC_GPIO_TIMER TIM15
#define HAPTIC_GPIO_AF GPIO_AF4
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART USART3
#define FLYSKY_HALL_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 10)
@@ -197,33 +183,6 @@ TIM17: ROTARY_ENCODER_TIMER
#define FLYSKY_HALL_DMA_Stream_RX LL_DMA_STREAM_2
#define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_USART3_RX
// LED Strip
#define LED_STRIP_LENGTH 7 // 6POS + 1 common (many leds in //)
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 1
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 6
#define CFS_LEDS_PER_SWITCH 1
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.00 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1_CH3
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM1_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOB, 15)
#define LED_RED2_GPIO GPIO_PIN(GPIOJ, 12)
#define LED_GREEN_GPIO GPIO_PIN(GPIOB, 13)
#define LED_BLUE_GPIO GPIO_PIN(GPIOB, 12)
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOI, 1)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOD, 7)
@@ -304,53 +263,6 @@ TIM17: ROTARY_ENCODER_TIMER
#define EXTI15_10_IRQ_Priority 9
#endif
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_GPIO_A GPIOA
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_6
#define ROTARY_ENCODER_GPIO_B GPIOA
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_7
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO_A->IDR >> 6) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 6) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_6
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_7
#if !defined(USE_EXTI9_5_IRQ)
#define USE_EXTI9_5_IRQ
#define EXTI9_5_IRQ_Priority 9
#endif
#define ROTARY_ENCODER_EXTI_PORT_A LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_PORT_B LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE6
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LANDSCAPE_LCD true
#define PORTRAIT_LCD false
#define LANDSCAPE_LCD_SML false
#define LANDSCAPE_LCD_STD true
#define LANDSCAPE_LCD_LRG false
#define LCD_W 480
#define LCD_H 320
#define LCD_PHYS_W LCD_W
#define LCD_PHYS_H LCD_H
#define LCD_DEPTH 16
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_
-9
View File
@@ -41,7 +41,6 @@ if(PCB STREQUAL X9E)
set(BITMAPS_TARGET taranis_bitmaps)
set(FONTS_TARGET taranis_fonts)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS NO)
set(BLUETOOTH YES)
set(ROTARY_ENCODER YES)
set(MODULE_SIZE_STD YES)
@@ -64,7 +63,6 @@ elseif(PCB STREQUAL X9D+)
set(CPU_TYPE_FULL STM32F407xE)
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
add_definitions(-DSOFTWARE_VOLUME -DPWR_BUTTON_${PWR_BUTTON} -DHARDWARE_POWER_MANAGEMENT_UNIT)
set(STATUS_LEDS YES)
set(PXX2 ON)
set(PXX_FREQUENCY "HIGH")
set(BLUETOOTH YES)
@@ -77,7 +75,6 @@ elseif(PCB STREQUAL X9D+)
set(FLAVOUR x9d+)
set(CPU_TYPE_FULL STM32F205xE)
set(AUX_SERIAL ON)
set(STATUS_LEDS NO)
set(MODULE_SIZE_STD YES)
endif()
elseif(PCB STREQUAL X9D)
@@ -92,7 +89,6 @@ elseif(PCB STREQUAL X9D)
set(FONTS_TARGET taranis_fonts)
set(LCD_DRIVER lcd_driver_aspi.cpp)
set(AUX_SERIAL ON)
set(STATUS_LEDS NO)
add_definitions(-DMANUFACTURER_FRSKY)
set(MODULE_SIZE_STD YES)
elseif(PCB STREQUAL X7)
@@ -103,7 +99,6 @@ elseif(PCB STREQUAL X7)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS YES)
add_definitions(-DPCBX7 -DSOFTWARE_VOLUME)
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
if(PCBREV STREQUAL T12)
@@ -429,7 +424,6 @@ elseif(PCB STREQUAL X9LITE)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS YES)
set(ROTARY_ENCODER YES)
add_definitions(-DMANUFACTURER_FRSKY)
elseif(PCB STREQUAL X9LITES)
@@ -449,7 +443,6 @@ elseif(PCB STREQUAL X9LITES)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS YES)
set(BLUETOOTH YES)
set(ROTARY_ENCODER YES)
add_definitions(-DMANUFACTURER_FRSKY)
@@ -470,7 +463,6 @@ elseif(PCB STREQUAL XLITE)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS YES)
set(BLUETOOTH YES)
add_definitions(-DMANUFACTURER_FRSKY)
elseif(PCB STREQUAL XLITES)
@@ -489,7 +481,6 @@ elseif(PCB STREQUAL XLITES)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(STATUS_LEDS YES)
set(PXX2 ON)
set(BLUETOOTH YES)
set(IMU YES)
+3 -3
View File
@@ -163,7 +163,7 @@ void boardInit()
pwrInit();
boardInitModulePorts();
#if defined(STATUS_LEDS)
#if STATUS_LEDS
ledInit();
#if !defined(POWER_LED_BLUE)
ledBlue();
@@ -201,7 +201,7 @@ void boardInit()
if (getBatteryVoltage() >= 780) setFSLedON(3);
if (getBatteryVoltage() >= 820) setFSLedON(4);
if (getBatteryVoltage() >= 842) setFSLedON(5);
#elif defined(STATUS_LEDS)
#elif STATUS_LEDS
// Use Status LED to indicate battery charge level instead
if (getBatteryVoltage() <= 660) ledRed(); // low discharge
else if (getBatteryVoltage() <= 842) ledBlue(); // charging
@@ -290,7 +290,7 @@ void boardOff()
rgbLedClearAll();
#endif
#if defined(STATUS_LEDS) && !defined(BOOT)
#if STATUS_LEDS && !defined(BOOT)
ledOff();
#endif
+5 -5
View File
@@ -181,7 +181,7 @@ void pwrResetHandler();
#define pwrForcePressed() false
// Backlight driver
#if defined(OLED_SCREEN)
#if OLED_SCREEN
#define BACKLIGHT_DISABLE() lcdSetRefVolt(0)
#define BACKLIGHT_FORCED_ON 255
#else
@@ -199,7 +199,7 @@ bool isBacklightEnabled();
void backlightEnable(uint8_t level, uint8_t color);
#define BACKLIGHT_ENABLE() \
backlightEnable(currentBacklightBright, g_eeGeneral.backlightColor)
#elif defined(OLED_SCREEN)
#elif OLED_SCREEN
#define BACKLIGHT_ENABLE() lcdSetRefVolt(currentBacklightBright)
#else
void backlightEnable(uint8_t level);
@@ -255,7 +255,7 @@ void ledBlue();
#define LCD_CONTRAST_DEFAULT 25
#else
#define IS_LCD_RESET_NEEDED() true
#if defined(OLED_SCREEN)
#if OLED_SCREEN
#define LCD_CONTRAST_MIN 2
#define LCD_CONTRAST_MAX 254
#else
@@ -269,7 +269,7 @@ void ledBlue();
#define LCD_BRIGHTNESS_DEFAULT 30
#endif
#if defined(OLED_SCREEN)
#if OLED_SCREEN
#define LCD_CONTRAST_DEFAULT 254 // full brightness
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12)
#define LCD_CONTRAST_DEFAULT 20
@@ -278,7 +278,7 @@ void ledBlue();
#else
#define LCD_CONTRAST_DEFAULT 15
#endif
#if defined(OLED_SCREEN)
#if OLED_SCREEN
// add offset 2px because driver (SH1106) of the 1.3 OLED is for a 132 display
#define LCD_W_OFFSET 0x02
#endif
+6 -242
View File
@@ -21,25 +21,7 @@
#pragma once
#if defined(STM32F413xx)
#define CPU_FREQ 100000000
#define PERI1_FREQUENCY 50000000
#define PERI2_FREQUENCY 100000000
#define TIMER_MULT_APB1 1
#define TIMER_MULT_APB2 1
#elif defined(STM32F4)
#define CPU_FREQ 168000000
#define PERI1_FREQUENCY 42000000
#define PERI2_FREQUENCY 84000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#else
#define CPU_FREQ 120000000
#define PERI1_FREQUENCY 30000000
#define PERI2_FREQUENCY 60000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#endif
#include "hal_settings.h"
#define TELEMETRY_EXTI_PRIO 0 // required for soft serial
@@ -58,7 +40,7 @@
#define ROTARY_ENCODER_GPIO GPIOD
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_12 // PD.12
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_13 // PD.13
#define ROTARY_ENCODER_POSITION() (ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03
#define ROTARY_ENCODER_POSITION (ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_12
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_13
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTD
@@ -74,7 +56,7 @@
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_10 // PE.10
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_11 // PE.11
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 11) & 0x01))
#define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 11) & 0x01))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_10
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_11
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE
@@ -90,7 +72,7 @@
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.09
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_11 // PE.11
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))
#define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_9
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_11
// ROTARY_ENCODER_EXTI_LINE1 IRQ
@@ -111,7 +93,7 @@
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_10 // PE.10
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_12 // PE.12
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02))
#define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_10
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_12
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE
@@ -127,7 +109,7 @@
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_10 // PE.10
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)
#define ROTARY_ENCODER_POSITION ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_9
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_10
#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE
@@ -246,158 +228,6 @@
#define PWR_ON_GPIO GPIO_PIN(GPIOD, 0) // PD.00
#endif
#if defined(RADIO_X9DP2019)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_clear
#define GPIO_LED_GPIO_OFF gpio_set
#define LED_RED_GPIO GPIO_PIN(GPIOA, 13)
#elif defined(PCBXLITES)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_clear
#define GPIO_LED_GPIO_OFF gpio_set
#define LED_RED_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#elif defined(PCBXLITE)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_clear
#define GPIO_LED_GPIO_OFF gpio_set
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 5) // PE.05
#define LED_RED_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#elif defined(PCBX7ACCESS)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_BLUE_GPIO GPIO_PIN(GPIOB, 1) // PB.01
#define LED_RED_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#elif defined(RADIO_T8)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOB, 1) // PB.01
#define LED_RED_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#define LED_BLUE_GPIO GPIO_PIN(GPIOC, 5) // PC.05
#elif defined(RADIO_COMMANDO8)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOC, 0) // PC.00
#define LED_RED_GPIO GPIO_PIN(GPIOC, 2) // PC.02
#define LED_BLUE_GPIO GPIO_PIN(GPIOC, 1) // PC.01
#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOA, 7) // PA.07
#elif defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_GREEN_GPIO GPIO_PIN(GPIOA, 7) // PA.07
#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TX12)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOB, 1) // PB.01
#define LED_RED_GPIO GPIO_PIN(GPIOC, 5) // PC.05
#define LED_BLUE_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOG, 1) // PG.01
#define LED_RED_GPIO GPIO_PIN(GPIOC, 5) // PC.05
#define LED_BLUE_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_GX12)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOA, 7) // PA.07
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 14) // PE.14
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#elif defined(PCBX7)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#define LED_RED_GPIO GPIO_PIN(GPIOC, 5) // PC.05
#define LED_BLUE_GPIO GPIO_PIN(GPIOB, 1) // PB.01
#elif defined(PCBX9LITES)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOE, 5) // PE.05
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#elif defined(PCBX9LITE)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define LED_RED_GPIO GPIO_PIN(GPIOE, 5) // PE.05
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#endif
// LED Strip
#if defined(RGBLEDS)
#if defined(RADIO_GX12)
#define LED_STRIP_LENGTH 8
#define BLING_LED_STRIP_START 0
#define BLING_LED_STRIP_LENGTH 0
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 8
#define CFS_LEDS_PER_SWITCH 1
#else
#define LED_STRIP_LENGTH 7
#define BLING_LED_STRIP_START 0
#define BLING_LED_STRIP_LENGTH 7
#endif
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 8) // PA.08 / TIM1_CH1
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1 / TIM2
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define LED_STRIP_TIMER_DMA DMA2
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_5
#define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#elif defined(RADIO_T14) || defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14)
#define LED_STRIP_LENGTH 38
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 32
#elif defined(RADIO_V12)
#define LED_STRIP_LENGTH 6 // 6POS switches only?
#else
#define LED_STRIP_LENGTH 1
#define BLING_LED_STRIP_START 0
#define BLING_LED_STRIP_LENGTH 1
#endif
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.10 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA2
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_5
#define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#endif
#if defined(FUNCTION_SWITCHES)
#if defined(RADIO_BUMBLEBEE)
#define GPIO_FSLED_GPIO_ON GPIO_SetBits
@@ -950,13 +780,6 @@
#endif
// LCD driver
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE)
#define LCD_VERTICAL_INVERT
#endif
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_BUMBLEBEE) || defined(RADIO_GX12) || defined(RADIO_V14)
#define LCD_HORIZONTAL_INVERT
#define OLED_SCREEN
#endif
#if defined(RADIO_T14) || defined(RADIO_GX12) || defined(RADIO_V14)
#define SSD1309_LCD
#endif
@@ -1152,39 +975,6 @@
#endif
#endif
// Haptic
#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE) || defined(RADIO_GX12)
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03
#define HAPTIC_GPIO_AF GPIO_AF1
#define HAPTIC_TIMER TIM2 // Timer 2 Channel1
#define HAPTIC_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define HAPTIC_COUNTER_REGISTER HAPTIC_TIMER->CCR2
#define HAPTIC_CCMR1 TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2
#define HAPTIC_CCER TIM_CCER_CC2E
#define BACKLIGHT_BDTR TIM_BDTR_MOE
#elif defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS)
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOA, 10) // PA.10
#define HAPTIC_GPIO_AF GPIO_AF1
#define HAPTIC_TIMER TIM1 // Timer1 Channel3
#define HAPTIC_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define HAPTIC_COUNTER_REGISTER HAPTIC_TIMER->CCR3
#define HAPTIC_CCMR2 TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2
#define HAPTIC_CCER TIM_CCER_CC3E
#elif defined(PCBX9E) || defined(PCBX9DP) || defined(PCBX7)
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 8) // PB.08
#define HAPTIC_GPIO_AF GPIO_AF3
#define HAPTIC_TIMER TIM10 // Timer 10 Channel1
#define HAPTIC_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define HAPTIC_COUNTER_REGISTER HAPTIC_TIMER->CCR1
#define HAPTIC_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2
#define HAPTIC_CCER TIM_CCER_CC1E
#else
#define HAPTIC_GPIO GPIO_PIN(GPIOC, 12) // PC.12
#endif
#if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) || defined (RADIO_V14) || defined(RADIO_GX12)
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART UART4
@@ -1256,29 +1046,3 @@
#define STORAGE_BLUETOOTH
#endif
#endif
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
// LCD driver
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E)
#define LCD_W 212
#define LCD_H 64
#define LCD_DEPTH 4
#else
#define LCD_W 128
#define LCD_H 64
#define LCD_DEPTH 1
#endif
#if defined(PCBX9DP) || defined(PCBX9E)
#define HAS_BACKLIGHT_COLOR
#endif
+4 -4
View File
@@ -35,7 +35,7 @@
#include "edgetx.h"
#endif
#if defined(OLED_SCREEN)
#if OLED_SCREEN
#define LCD_CONTRAST_OFFSET 0
#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_V14)
#define LCD_CONTRAST_OFFSET -10
@@ -158,7 +158,7 @@ void lcdStart()
gpio_set(OLED_VCC_CS);
#endif
#else
#if defined(LCD_VERTICAL_INVERT)
#if LCD_VERTICAL_INVERT
// T12 and TX12 have the screen inverted.
#if defined(RADIO_V12)
lcdWriteCommand(0xe2); // (14) Soft reset
@@ -174,7 +174,7 @@ void lcdStart()
lcdWriteCommand(0xa6); // Set display mode
#else
lcdWriteCommand(0xe2); // (14) Soft reset
#if defined(LCD_HORIZONTAL_INVERT)
#if LCD_HORIZONTAL_INVERT
lcdWriteCommand(0xa1); // Set seg
#else
lcdWriteCommand(0xa0); // Set seg
@@ -295,7 +295,7 @@ void lcdRefresh(bool wait)
#else
lcdWriteCommand(0x10); // Column addr 0
lcdWriteCommand(0xB0 | y); // Page addr y
#if !defined(LCD_VERTICAL_INVERT)
#if !LCD_VERTICAL_INVERT
lcdWriteCommand(0x04);
#endif
#endif
+1 -116
View File
@@ -65,12 +65,7 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 480000000
#define PERI1_FREQUENCY 120000000
#define PERI2_FREQUENCY 120000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
// Expanders
#define IO_INT_GPIO GPIO_PIN(GPIOD, 3)
@@ -136,22 +131,12 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA
#define LCD_SPI_MOSI_GPIO GPIOI
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_9
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#define LCD_RESET_GPIO GPIOJ
#define LCD_RESET_GPIO_PIN LL_GPIO_PIN_12
#define LCD_TE_GPIO GPIOI
#define LCD_TE_GPIO_PIN LL_GPIO_PIN_4
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 10) // TIM1_CH3
#define BACKLIGHT_TIMER TIM1
#define BACKLIGHT_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_CLK_GPIO GPIO_PIN(GPIOF, 10)
#define QSPI_CLK_GPIO_AF GPIO_AF9
@@ -231,41 +216,6 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA
#define I2C_B1_GPIO_AF LL_GPIO_AF_4
#define I2C_B1_CLK_RATE 400000
// Haptic: TIM3_CH2
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOC, 7)
#define HAPTIC_GPIO_TIMER TIM3
#define HAPTIC_GPIO_AF GPIO_AF2
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// LED Strip
#define LED_STRIP_LENGTH 26 // 6POS + 2 rings of 10
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 20
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 6
#define CFS_LEDS_PER_SWITCH 1
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 0) // PA.00 / TIM2_CH1
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1/2/16/17
#define LED_STRIP_TIMER TIM2
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM2_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOI, 8) // PI.08
#define LED_GREEN_GPIO GPIO_PIN(GPIOI, 11) // PI.11
#define LED_BLUE_GPIO GPIO_PIN(GPIOI, 10) // PI.10
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOB, 13) // PB.13
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOH, 9) // PH.09
@@ -399,71 +349,6 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA
#define EXTI2_IRQ_Priority 9
#endif
// IMU
#define IMU_I2C_BUS I2C_Bus_1
#define IMU_INT_GPIO GPIO_PIN(GPIOG, 13) // PG.13
#define IMU_INVERT_X // X axis mounted reversed (default, user-overridable)
#define IMU_INVERT_Y // Y axis mounted reversed (default, user-overridable)
// IMU_INT_EXTI IRQ
#if !defined(USE_EXTI15_10_IRQ)
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 6
#endif
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_INVERTED
#define ROTARY_ENCODER_GPIO_A GPIOI
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_7
#define ROTARY_ENCODER_GPIO_B GPIOJ
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_8
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO_A->IDR >> 7) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 7) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_7
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_8
#if !defined(USE_EXTI7_IRQ)
#define USE_EXTI7_IRQ
#define EXTI7_IRQ_Priority 5
#endif
#if !defined(USE_EXTI8_IRQ)
#define USE_EXTI8_IRQ
#define EXTI8_IRQ_Priority 5
#endif
#define ROTARY_ENCODER_EXTI_PORT_A LL_SYSCFG_EXTI_PORTI
#define ROTARY_ENCODER_EXTI_PORT_B LL_SYSCFG_EXTI_PORTJ
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE8
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LANDSCAPE_LCD true
#define PORTRAIT_LCD false
#define LANDSCAPE_LCD_SML false
#define LANDSCAPE_LCD_STD true
#define LANDSCAPE_LCD_LRG false
#define LCD_W 480
#define LCD_H 320
#define LCD_PHYS_W LCD_H
#define LCD_PHYS_H LCD_W
#define LCD_DEPTH 16
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_
+1 -191
View File
@@ -72,12 +72,7 @@ USART6: INTMODULE_USART
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 480000000
#define PERI1_FREQUENCY 120000000
#define PERI2_FREQUENCY 120000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#include "hal_settings.h"
// Keys
#define KEYS_GPIO_REG_PAGEDN GPIOA
@@ -132,91 +127,6 @@ USART6: INTMODULE_USART
#define TRIMS_GPIO_REG_LSU GPIOH
#define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13
// Extender Switches
#define SWITCHES_A_3POS
#define SWITCHES_GPIO_REG_A_H
#define SWITCHES_GPIO_PIN_A_H PCA95XX_P15
#define SWITCHES_GPIO_REG_A_L
#define SWITCHES_GPIO_PIN_A_L PCA95XX_P14
#define SWITCHES_B_3POS
#define SWITCHES_GPIO_REG_B_H
#define SWITCHES_GPIO_PIN_B_H PCA95XX_P13
#define SWITCHES_GPIO_REG_B_L
#define SWITCHES_GPIO_PIN_B_L PCA95XX_P12
#define SWITCHES_C_3POS
#define SWITCHES_GPIO_REG_C_H
#define SWITCHES_GPIO_PIN_C_H PCA95XX_P11
#define SWITCHES_GPIO_REG_C_L
#define SWITCHES_GPIO_PIN_C_L PCA95XX_P10
#define SWITCHES_D_3POS
#define SWITCHES_GPIO_REG_D_H
#define SWITCHES_GPIO_PIN_D_H PCA95XX_P7
#define SWITCHES_GPIO_REG_D_L
#define SWITCHES_GPIO_PIN_D_L PCA95XX_P6
#define SWITCHES_E_3POS
#define SWITCHES_GPIO_REG_E_H
#define SWITCHES_GPIO_PIN_E_H PCA95XX_P16
#define SWITCHES_GPIO_REG_E_L
#define SWITCHES_GPIO_PIN_E_L PCA95XX_P17
#define SWITCHES_F_2POS
#define SWITCHES_GPIO_REG_F
#define SWITCHES_GPIO_PIN_F PCA95XX_P1
#define SWITCHES_G_3POS
#define SWITCHES_GPIO_REG_G_H
#define SWITCHES_GPIO_PIN_G_H PCA95XX_P4
#define SWITCHES_GPIO_REG_G_L
#define SWITCHES_GPIO_PIN_G_L PCA95XX_P5
#define SWITCHES_H_2POS
#define SWITCHES_GPIO_REG_H
#define SWITCHES_GPIO_PIN_H PCA95XX_P0
#define SWITCHES_I_2POS
#define SWITCHES_GPIO_REG_I
#define SWITCHES_GPIO_PIN_I PCA95XX_P2
#define SWITCHES_J_2POS
#define SWITCHES_GPIO_REG_J
#define SWITCHES_GPIO_PIN_J PCA95XX_P3
// function switches
//SW1
#define SWITCHES_GPIO_REG_K
#define SWITCHES_GPIO_PIN_K PCA95XX_P0
#define SWITCHES_K_CFS_IDX 0
#define FUNCTION_SWITCH_1 SK
//SW2
#define SWITCHES_GPIO_REG_L
#define SWITCHES_GPIO_PIN_L PCA95XX_P1
#define SWITCHES_L_CFS_IDX 1
#define FUNCTION_SWITCH_2 SL
//SW3
#define SWITCHES_GPIO_REG_M
#define SWITCHES_GPIO_PIN_M PCA95XX_P2
#define SWITCHES_M_CFS_IDX 2
#define FUNCTION_SWITCH_3 SM
//SW4
#define SWITCHES_GPIO_REG_N
#define SWITCHES_GPIO_PIN_N PCA95XX_P3
#define SWITCHES_N_CFS_IDX 3
#define FUNCTION_SWITCH_4 SN
//SW5
#define SWITCHES_GPIO_REG_O
#define SWITCHES_GPIO_PIN_O PCA95XX_P4
#define SWITCHES_O_CFS_IDX 4
#define FUNCTION_SWITCH_5 SO
//SW6
#define SWITCHES_GPIO_REG_P
#define SWITCHES_GPIO_PIN_P PCA95XX_P5
#define SWITCHES_P_CFS_IDX 5
#define FUNCTION_SWITCH_6 SP
// Expanders
#define IO_INT_GPIO GPIO_PIN(GPIOD, 3)
#define IO_RESET_GPIO GPIO_PIN(GPIOG, 10)
@@ -343,19 +253,9 @@ USART6: INTMODULE_USART
// LCD
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#define LCD_RESET_GPIO GPIOJ
#define LCD_RESET_GPIO_PIN LL_GPIO_PIN_12
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 10) // TIM1_CH3
#define BACKLIGHT_TIMER TIM1
#define BACKLIGHT_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_CLK_GPIO GPIO_PIN(GPIOF, 10)
#define QSPI_CLK_GPIO_AF GPIO_AF9
@@ -443,41 +343,6 @@ USART6: INTMODULE_USART
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic: TIM3_CH2
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOC, 7)
#define HAPTIC_GPIO_TIMER TIM3
#define HAPTIC_GPIO_AF GPIO_AF2
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// LED Strip
#define LED_STRIP_LENGTH 26 // 6POS + 2 rings of 10
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 20
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 6
#define CFS_LEDS_PER_SWITCH 1
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 0) // PA.00 / TIM2_CH1
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1/2/16/17
#define LED_STRIP_TIMER TIM2
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM2_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOI, 8) // PI.08
#define LED_GREEN_GPIO GPIO_PIN(GPIOI, 11) // PI.11
#define LED_BLUE_GPIO GPIO_PIN(GPIOI, 10) // PI.10
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOB, 13) // PB.13
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOH, 9) // PH.09
@@ -599,61 +464,6 @@ USART6: INTMODULE_USART
#define EXTI2_IRQ_Priority 9
#endif
#define IMU_I2C_BUS I2C_Bus_2
#define IMU_INT_GPIO GPIO_PIN(GPIOG, 13) // PG.13
#define IMU_INVERT_X // X axis mounted reversed (default, user-overridable)
#define IMU_INVERT_Y // Y axis mounted reversed (default, user-overridable)
#if !defined(USE_EXTI15_10_IRQ)
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 6
#endif
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_INVERTED
#define ROTARY_ENCODER_GPIO_A GPIOI
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_7
#define ROTARY_ENCODER_GPIO_B GPIOJ
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_8
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO_A->IDR >> 7) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 7) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_7
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_8
#if !defined(USE_EXTI7_IRQ)
#define USE_EXTI7_IRQ
#define EXTI7_IRQ_Priority 5
#endif
#if !defined(USE_EXTI8_IRQ)
#define USE_EXTI8_IRQ
#define EXTI8_IRQ_Priority 5
#endif
#define ROTARY_ENCODER_EXTI_PORT_A LL_SYSCFG_EXTI_PORTI
#define ROTARY_ENCODER_EXTI_PORT_B LL_SYSCFG_EXTI_PORTJ
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE8
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LCD_W 800
#define LCD_H 480
#define LCD_PHYS_W LCD_W
#define LCD_PHYS_H LCD_H
#define LCD_DEPTH 16
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_