Generic EXTI driver now configures & enables trigger

This commit is contained in:
Raphael Coeffic
2022-12-10 13:37:31 +01:00
committed by Raphael Coeffic
parent ef147671ef
commit 84d8075794
8 changed files with 106 additions and 131 deletions
@@ -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
@@ -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
@@ -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);
@@ -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);
}
@@ -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);
+11 -11
View File
@@ -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
+54 -58
View File
@@ -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
+3 -18
View File
@@ -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()