diff --git a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt index 4f7824996..ece9df49a 100644 --- a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt @@ -13,6 +13,7 @@ add_library(stm32cube_ll OBJECT EXCLUDE_FROM_ALL ${STM32CUBE_DIR}/Src/stm32f2xx_ll_dma.c ${STM32CUBE_DIR}/Src/stm32f2xx_ll_usart.c ${STM32CUBE_DIR}/Src/stm32f2xx_ll_rcc.c + ${STM32CUBE_DIR}/Src/stm32f2xx_ll_exti.c # HAL drivers ${STM32CUBE_DIR}/Src/stm32f2xx_hal_rcc.c ${STM32CUBE_DIR}/Src/stm32f2xx_hal_i2c.c diff --git a/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp b/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp index 068ac0cff..b059af8ba 100644 --- a/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp +++ b/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp @@ -19,6 +19,7 @@ * GNU General Public License for more details. */ +#include "stm32_hal_ll.h" #include "stm32_exti_driver.h" #include "mixer_scheduler.h" #include "board.h" @@ -47,26 +48,23 @@ static void trigger_intmodule_heartbeat() void init_intmodule_heartbeat() { TRACE("init_intmodule_heartbeat"); - GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Pin = INTMODULE_HEARTBEAT_GPIO_PIN; - GPIO_Init(INTMODULE_HEARTBEAT_GPIO, &GPIO_InitStructure); - SYSCFG_EXTILineConfig(INTMODULE_HEARTBEAT_EXTI_PortSource, - INTMODULE_HEARTBEAT_EXTI_PinSource); + LL_GPIO_InitTypeDef pinInit; + LL_GPIO_StructInit(&pinInit); + + pinInit.Pin = INTMODULE_HEARTBEAT_GPIO_PIN; + pinInit.Mode = LL_GPIO_MODE_INPUT; + pinInit.Speed = LL_GPIO_SPEED_FREQ_LOW; + pinInit.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + pinInit.Pull = LL_GPIO_PULL_UP; - EXTI_InitTypeDef EXTI_InitStructure; - EXTI_StructInit(&EXTI_InitStructure); - EXTI_InitStructure.EXTI_Line = INTMODULE_HEARTBEAT_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = INTMODULE_HEARTBEAT_TRIGGER; - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); + LL_GPIO_Init(INTMODULE_HEARTBEAT_GPIO, &pinInit); + + LL_SYSCFG_SetEXTISource(INTMODULE_HEARTBEAT_EXTI_PORT, INTMODULE_HEARTBEAT_EXTI_SYS_LINE); + + stm32_exti_enable(INTMODULE_HEARTBEAT_EXTI_LINE, INTMODULE_HEARTBEAT_TRIGGER, + trigger_intmodule_heartbeat); - stm32_exti_enable(INTMODULE_HEARTBEAT_EXTI_LINE, trigger_intmodule_heartbeat); heartbeatCapture.valid = true; } @@ -76,14 +74,6 @@ void stop_intmodule_heartbeat() heartbeatCapture.valid = false; stm32_exti_disable(INTMODULE_HEARTBEAT_EXTI_LINE); - - EXTI_InitTypeDef EXTI_InitStructure; - EXTI_StructInit(&EXTI_InitStructure); - EXTI_InitStructure.EXTI_Line = INTMODULE_HEARTBEAT_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = INTMODULE_HEARTBEAT_TRIGGER; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); } #endif diff --git a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp index cd51193ca..1d05ec6ba 100644 --- a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp +++ b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp @@ -19,6 +19,7 @@ * GNU General Public License for more details. */ +#include "stm32_hal_ll.h" #include "stm32_exti_driver.h" #include "board.h" @@ -105,8 +106,6 @@ void rotaryEncoderStartDelay() void rotaryEncoderInit() { - rotencPosition = ROTARY_ENCODER_POSITION(); - ROTARY_ENCODER_TIMER->ARR = 99; // 100uS ROTARY_ENCODER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 1000000 - 1; // 1uS ROTARY_ENCODER_TIMER->CCER = 0; @@ -115,22 +114,12 @@ void rotaryEncoderInit() ROTARY_ENCODER_TIMER->CR1 = 0; ROTARY_ENCODER_TIMER->DIER |= TIM_DIER_UIE; - SYSCFG_EXTILineConfig(ROTARY_ENCODER_EXTI_PortSource, ROTARY_ENCODER_EXTI_PinSource1); - SYSCFG_EXTILineConfig(ROTARY_ENCODER_EXTI_PortSource, ROTARY_ENCODER_EXTI_PinSource2); + LL_SYSCFG_SetEXTISource(ROTARY_ENCODER_EXTI_PORT, ROTARY_ENCODER_EXTI_SYS_LINE1); + LL_SYSCFG_SetEXTISource(ROTARY_ENCODER_EXTI_PORT, ROTARY_ENCODER_EXTI_SYS_LINE2); - EXTI_InitTypeDef EXTI_InitStructure; - EXTI_StructInit(&EXTI_InitStructure); - EXTI_InitStructure.EXTI_Line = ROTARY_ENCODER_EXTI_LINE1; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - - EXTI_InitStructure.EXTI_Line = ROTARY_ENCODER_EXTI_LINE2; - EXTI_Init(&EXTI_InitStructure); - - stm32_exti_enable(ROTARY_ENCODER_EXTI_LINE1, rotaryEncoderStartDelay); - stm32_exti_enable(ROTARY_ENCODER_EXTI_LINE2, rotaryEncoderStartDelay); + uint32_t trigger = LL_EXTI_TRIGGER_RISING_FALLING; + stm32_exti_enable(ROTARY_ENCODER_EXTI_LINE1, trigger, rotaryEncoderStartDelay); + stm32_exti_enable(ROTARY_ENCODER_EXTI_LINE2, trigger, rotaryEncoderStartDelay); NVIC_EnableIRQ(ROTARY_ENCODER_TIMER_IRQn); NVIC_SetPriority(ROTARY_ENCODER_TIMER_IRQn, 7); diff --git a/radio/src/targets/common/arm/stm32/stm32_exti_driver.cpp b/radio/src/targets/common/arm/stm32/stm32_exti_driver.cpp index 024524ebd..dec872b4e 100644 --- a/radio/src/targets/common/arm/stm32/stm32_exti_driver.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_exti_driver.cpp @@ -82,8 +82,20 @@ static bool _has_handler(stm32_exti_handler_t* _handlers, uint8_t len) return false; } -void stm32_exti_enable(uint32_t line, stm32_exti_handler_t cb) +void stm32_exti_enable(uint32_t line, uint32_t trigger, stm32_exti_handler_t cb) { + if (line > LL_EXTI_LINE_15) return; + + LL_EXTI_InitTypeDef EXTI_init; + LL_EXTI_StructInit(&EXTI_init); + + EXTI_init.Line_0_31 = line; + EXTI_init.Mode = LL_EXTI_MODE_IT; + EXTI_init.Trigger = trigger; + EXTI_init.LineCommand = ENABLE; + + LL_EXTI_Init(&EXTI_init); + uint32_t line_pos = POSITION_VAL(line); #if defined(USE_EXTI1_IRQ) @@ -114,4 +126,6 @@ void stm32_exti_disable(uint32_t line) #if defined(USE_EXTI15_10_IRQ) _CLEAR_EXTI_IRQ_HANDLER(EXTI15_10_IRQ, 10, 15, line_pos); #endif + + LL_EXTI_DisableIT_0_31(line); } diff --git a/radio/src/targets/common/arm/stm32/stm32_exti_driver.h b/radio/src/targets/common/arm/stm32/stm32_exti_driver.h index 6c15f10cc..641603f43 100644 --- a/radio/src/targets/common/arm/stm32/stm32_exti_driver.h +++ b/radio/src/targets/common/arm/stm32/stm32_exti_driver.h @@ -34,7 +34,7 @@ typedef void (*stm32_exti_handler_t)(); // Set callback and enable IRQ -void stm32_exti_enable(uint32_t line, stm32_exti_handler_t cb); +void stm32_exti_enable(uint32_t line, uint32_t trigger, stm32_exti_handler_t cb); // Reset callback and disable IRQ if no more handlers void stm32_exti_disable(uint32_t line); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 15e8418dd..02cc65aad 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -81,15 +81,15 @@ #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_11 // PH.11 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_10 // PH.10 #define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03) -#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line11 -#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line10 +#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_PortSource EXTI_PortSourceGPIOH -#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource11 -#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource10 +#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 TIM12 #define ROTARY_ENCODER_TIMER_IRQn TIM8_BRK_TIM12_IRQn #define ROTARY_ENCODER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler @@ -920,10 +920,10 @@ #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define INTMODULE_HEARTBEAT_GPIO GPIOD -#define INTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_12 // PD.12 / TIM4_CH1 -#define INTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOD -#define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource12 -#define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line12 +#define INTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_12 // PD.12 / TIM4_CH1 +#define INTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTH +#define INTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE12 +#define INTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_12 // INTMODULE_HEARTBEAT_EXTI IRQ #if !defined(USE_EXTI15_10_IRQ) #define USE_EXTI15_10_IRQ @@ -931,9 +931,9 @@ #endif #define INTMODULE_HEARTBEAT_REUSE_INTERRUPT_ROTARY_ENCODER #if defined(INTERNAL_MODULE_PXX2) - #define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Falling + #define INTMODULE_HEARTBEAT_TRIGGER LL_EXTI_TRIGGER_FALLING #else - #define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Rising + #define INTMODULE_HEARTBEAT_TRIGGER LL_EXTI_TRIGGER_RISING #endif // Trainer Port diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index c0897e328..736df5819 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -186,11 +186,11 @@ #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_12 // PD.12 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_13 // PD.13 #define ROTARY_ENCODER_POSITION() (ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03 - #define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line12 - #define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line13 - #define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOD - #define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource12 - #define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource13 + #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 + #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE12 + #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE13 // ROTARY_ENCODER_EXTI IRQ #if !defined(USE_EXTI15_10_IRQ) #define USE_EXTI15_10_IRQ @@ -202,11 +202,11 @@ #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_10 // PE.10 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_11 // PE.11 #define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 11) & 0x01)) - #define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line10 - #define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line11 - #define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE - #define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource10 - #define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource11 + #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 + #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE10 + #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE11 // ROTARY_ENCODER_EXTI IRQ #if !defined(USE_EXTI15_10_IRQ) #define USE_EXTI15_10_IRQ @@ -218,8 +218,8 @@ #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_11 // PE.11 #define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01)) - #define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line9 - #define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line11 + #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_9 + #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_11 // ROTARY_ENCODER_EXTI_LINE1 IRQ #if !defined(USE_EXTI9_5_IRQ) #define USE_EXTI9_5_IRQ @@ -230,20 +230,20 @@ #define USE_EXTI15_10_IRQ #define EXTI15_10_IRQ_Priority 5 #endif - #define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE - #define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource9 - #define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource11 + #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE + #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE9 + #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE11 #elif defined(PCBX9LITE) #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_10 // PE.10 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_12 // PE.12 #define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02)) - #define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line10 - #define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line12 - #define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE - #define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource10 - #define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource12 + #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 + #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE10 + #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE12 // ROTARY_ENCODER_EXTI IRQ #if !defined(USE_EXTI15_10_IRQ) #define USE_EXTI15_10_IRQ @@ -255,11 +255,11 @@ #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.9 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_10 // PE.10 #define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03) - #define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line9 - #define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line10 - #define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE - #define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource9 - #define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource10 + #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 + #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE9 + #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE10 // ROTARY_ENCODER_EXTI_LINE1 IRQ #if !defined(USE_EXTI9_5_IRQ) #define USE_EXTI9_5_IRQ @@ -1906,11 +1906,11 @@ #define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) - #define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN - #define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN + #define TELEMETRY_DIR_OUTPUT() LL_GPIO_ResetOutputPin(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN) + #define TELEMETRY_DIR_INPUT() LL_GPIO_SetOutputPin(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN) #else - #define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN - #define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN + #define TELEMETRY_DIR_OUTPUT() LL_GPIO_SetOutputPin(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN) + #define TELEMETRY_DIR_INPUT() LL_GPIO_ResetOutputPin(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN) #endif #define TELEMETRY_GPIO GPIOD #define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05 @@ -1926,10 +1926,10 @@ #define TELEMETRY_DMA_TX_FLAG_TC DMA_IT_TCIF6 #define TELEMETRY_USART_IRQHandler USART2_IRQHandler #define TELEMETRY_USART_IRQn USART2_IRQn -#define TELEMETRY_EXTI_PortSource EXTI_PortSourceGPIOD -#define TELEMETRY_EXTI_PinSource EXTI_PinSource6 -#define TELEMETRY_EXTI_LINE EXTI_Line6 -#define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising +#define TELEMETRY_EXTI_PORT LL_SYSCFG_EXTI_PORTD +#define TELEMETRY_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE6 +#define TELEMETRY_EXTI_LINE LL_EXTI_LINE_6 +#define TELEMETRY_EXTI_TRIGGER LL_EXTI_TRIGGER_RISING // TELEMETRY_EXTI IRQ #if !defined(USE_EXTI9_5_IRQ) #define USE_EXTI9_5_IRQ @@ -2003,19 +2003,17 @@ #endif // Heartbeat for iXJT / ISRM synchro -#define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Falling +#define INTMODULE_HEARTBEAT_TRIGGER LL_EXTI_TRIGGER_FALLING #if !defined(HARDWARE_EXTERNAL_MODULE) // No heartbeat #elif defined(PCBXLITE) #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define INTMODULE_HEARTBEAT_GPIO GPIOD - #define INTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_15 - #define INTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOD - #define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource15 - #define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line15 - #define INTMODULE_HEARTBEAT_EXTI_IRQn EXTI15_10_IRQn - #define INTMODULE_HEARTBEAT_EXTI_IRQHandler EXTI15_10_IRQHandler + #define INTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_15 // PD.15 + #define INTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTD + #define INTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE15 + #define INTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_15 // INTMODULE_HEARTBEAT_EXTI IRQ #if !defined(USE_EXTI15_10_IRQ) #define USE_EXTI15_10_IRQ @@ -2027,10 +2025,10 @@ #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOA #define INTMODULE_HEARTBEAT_GPIO GPIOA - #define INTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_7 // PA.07 - #define INTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOA - #define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource7 - #define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line7 + #define INTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_7 // PA.07 + #define INTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTA + #define INTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE7 + #define INTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_7 // INTMODULE_HEARTBEAT_EXTI IRQ #if !defined(USE_EXTI9_5_IRQ) #define USE_EXTI9_5_IRQ @@ -2040,10 +2038,10 @@ #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOB #define INTMODULE_HEARTBEAT_GPIO GPIOB - #define INTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_1 // PB.01 - #define INTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOB - #define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource1 - #define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line1 + #define INTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_1 // PB.01 + #define INTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTB + #define INTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE1 + #define INTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_1 // INTMODULE_HEARTBEAT_EXTI IRQ #if !defined(USE_EXTI1_IRQ) #define USE_EXTI1_IRQ @@ -2055,10 +2053,10 @@ #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC #define INTMODULE_HEARTBEAT_GPIO GPIOC - #define INTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_7 // PC.07 - #define INTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOC - #define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource7 - #define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line7 + #define INTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_7 // PC.07 + #define INTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTC + #define INTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE7 + #define INTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_7 // INTMODULE_HEARTBEAT_EXTI IRQ #if !defined(USE_EXTI9_5_IRQ) #define USE_EXTI9_5_IRQ @@ -2070,12 +2068,10 @@ // #if defined(PCBX9LITE) // #define EXTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD // #define EXTMODULE_HEARTBEAT_GPIO GPIOD -// #define EXTMODULE_HEARTBEAT_GPIO_PIN GPIO_Pin_15 -// #define EXTMODULE_HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOD -// #define EXTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource15 -// #define EXTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line15 -// #define EXTMODULE_HEARTBEAT_EXTI_IRQn EXTI15_10_IRQn -// #define EXTMODULE_HEARTBEAT_EXTI_IRQHandler EXTI15_10_IRQHandler +// #define EXTMODULE_HEARTBEAT_GPIO_PIN LL_GPIO_PIN_15 +// #define EXTMODULE_HEARTBEAT_EXTI_PORT LL_SYSCFG_EXTI_PORTD +// #define EXTMODULE_HEARTBEAT_EXTI_SYS_LINE LL_SYSCFG_EXTI_LINE15 +// #define EXTMODULE_HEARTBEAT_EXTI_LINE LL_EXTI_LINE_15 // #endif // Trainer / Trainee from the module bay diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index 4fd643f27..61baaf38a 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -19,6 +19,7 @@ * GNU General Public License for more details. */ +#include "stm32_hal_ll.h" #include "stm32_exti_driver.h" #include "aux_serial_driver.h" @@ -124,14 +125,6 @@ void telemetryPortInvertedInit(uint32_t baudrate) stm32_exti_disable(TELEMETRY_EXTI_LINE); NVIC_DisableIRQ(TELEMETRY_TIMER_IRQn); - - EXTI_InitTypeDef EXTI_InitStructure; - EXTI_StructInit(&EXTI_InitStructure); - EXTI_InitStructure.EXTI_Line = TELEMETRY_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = TELEMETRY_EXTI_TRIGGER; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); return; } @@ -173,18 +166,10 @@ void telemetryPortInvertedInit(uint32_t baudrate) telemetryInitDirPin(); // Connect EXTI line to TELEMETRY RX pin - SYSCFG_EXTILineConfig(TELEMETRY_EXTI_PortSource, TELEMETRY_EXTI_PinSource); + LL_SYSCFG_SetEXTISource(TELEMETRY_EXTI_PORT, TELEMETRY_EXTI_SYS_LINE); // Configure EXTI for raising edge (start bit) - EXTI_InitTypeDef EXTI_InitStructure; - EXTI_StructInit(&EXTI_InitStructure); - EXTI_InitStructure.EXTI_Line = TELEMETRY_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = TELEMETRY_EXTI_TRIGGER; - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - - stm32_exti_enable(TELEMETRY_EXTI_LINE, do_telemetry_exti); + stm32_exti_enable(TELEMETRY_EXTI_LINE, TELEMETRY_EXTI_TRIGGER, do_telemetry_exti); } void telemetryPortInvertedRxBit()