Generic EXTI driver now configures & enables trigger
This commit is contained in:
committed by
Raphael Coeffic
parent
ef147671ef
commit
84d8075794
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user