chore: Move gt911 touch to generic EXTI driver (#3797)
* Move gt911 touch to generic EXTI driver * Further cleaning * chore: further cleaning
This commit is contained in:
@@ -67,6 +67,10 @@
|
||||
_DEFINE_EXTI_IRQ_HANDLER(EXTI1_IRQ, 1, 1);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI2_IRQ)
|
||||
_DEFINE_EXTI_IRQ_HANDLER(EXTI2_IRQ, 2, 2);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI9_5_IRQ)
|
||||
_DEFINE_EXTI_IRQ_HANDLER(EXTI9_5_IRQ, 5, 9);
|
||||
#endif
|
||||
@@ -102,6 +106,10 @@ void stm32_exti_enable(uint32_t line, uint8_t trigger, stm32_exti_handler_t cb)
|
||||
_SET_EXTI_IRQ_HANDLER(EXTI1_IRQ, 1, 1, line_pos, cb);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI2_IRQ)
|
||||
_SET_EXTI_IRQ_HANDLER(EXTI2_IRQ, 2, 2, line_pos, cb);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI9_5_IRQ)
|
||||
_SET_EXTI_IRQ_HANDLER(EXTI9_5_IRQ, 5, 9, line_pos, cb);
|
||||
#endif
|
||||
@@ -119,6 +127,10 @@ void stm32_exti_disable(uint32_t line)
|
||||
_CLEAR_EXTI_IRQ_HANDLER(EXTI1_IRQ, 1, 1, line_pos);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI2_IRQ)
|
||||
_CLEAR_EXTI_IRQ_HANDLER(EXTI2_IRQ, 2, 2, line_pos);
|
||||
#endif
|
||||
|
||||
#if defined(USE_EXTI9_5_IRQ)
|
||||
_CLEAR_EXTI_IRQ_HANDLER(EXTI9_5_IRQ, 5, 9, line_pos);
|
||||
#endif
|
||||
|
||||
@@ -771,17 +771,14 @@
|
||||
#else
|
||||
#define TOUCH_RST_GPIO_PIN LL_GPIO_PIN_10 // PF.10
|
||||
#endif
|
||||
#define TOUCH_INT_EXTI_LINE1 EXTI_Line2
|
||||
#define TOUCH_INT_EXTI_IRQn1 EXTI2_IRQn
|
||||
#define TOUCH_INT_EXTI_IRQHandler1 EXTI2_IRQHandler
|
||||
#define TOUCH_INT_EXTI_PortSource EXTI_PortSourceGPIOH
|
||||
#define TOUCH_INT_EXTI_PinSource1 EXTI_PinSource2
|
||||
|
||||
#define TOUCH_INT_EXTI_Line LL_EXTI_LINE_2
|
||||
#define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTH
|
||||
#define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE2
|
||||
#define TOUCH_INT_EXTI_IRQn EXTI2_IRQn
|
||||
#define TOUCH_INT_EXTI_IRQHandler EXTI2_IRQHandler
|
||||
// TOUCH_INT_EXTI IRQ
|
||||
#if !defined(USE_EXTI2_IRQ)
|
||||
#define USE_EXTI2_IRQ
|
||||
#define EXTI2_IRQ_Priority 9
|
||||
#endif
|
||||
|
||||
#if defined(PCBX12S)
|
||||
#define TOUCH_PANEL_INVERTED
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "stm32_hal.h"
|
||||
#include "stm32_i2c_driver.h"
|
||||
#include "stm32_gpio_driver.h"
|
||||
#include "stm32_exti_driver.h"
|
||||
|
||||
#include "hal.h"
|
||||
#include "tp_gt911.h"
|
||||
@@ -440,18 +441,14 @@ static short tapCount = 0;
|
||||
|
||||
static TouchState internalTouchState = {};
|
||||
|
||||
static void _gt911_exti_isr(void)
|
||||
{
|
||||
touchEventOccured = true;
|
||||
}
|
||||
|
||||
static void TOUCH_AF_ExtiStop(void)
|
||||
{
|
||||
LL_EXTI_InitTypeDef extiInit;
|
||||
LL_EXTI_StructInit(&extiInit);
|
||||
|
||||
extiInit.Line_0_31 = TOUCH_INT_EXTI_Line;
|
||||
extiInit.Mode = LL_EXTI_MODE_IT;
|
||||
extiInit.Trigger = LL_EXTI_TRIGGER_RISING;
|
||||
extiInit.LineCommand = DISABLE;
|
||||
LL_EXTI_Init(&extiInit);
|
||||
|
||||
NVIC_DisableIRQ(TOUCH_INT_EXTI_IRQn);
|
||||
stm32_exti_disable(TOUCH_INT_EXTI_Line);
|
||||
}
|
||||
|
||||
static void TOUCH_AF_ExtiConfig(void)
|
||||
@@ -459,17 +456,9 @@ static void TOUCH_AF_ExtiConfig(void)
|
||||
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
||||
LL_SYSCFG_SetEXTISource(TOUCH_INT_EXTI_Port, TOUCH_INT_EXTI_SysCfgLine);
|
||||
|
||||
LL_EXTI_InitTypeDef extiInit;
|
||||
LL_EXTI_StructInit(&extiInit);
|
||||
|
||||
extiInit.Line_0_31 = TOUCH_INT_EXTI_Line;
|
||||
extiInit.Mode = LL_EXTI_MODE_IT;
|
||||
extiInit.Trigger = LL_EXTI_TRIGGER_RISING;
|
||||
extiInit.LineCommand = ENABLE;
|
||||
LL_EXTI_Init(&extiInit);
|
||||
|
||||
NVIC_SetPriority(TOUCH_INT_EXTI_IRQn, 9);
|
||||
NVIC_EnableIRQ(TOUCH_INT_EXTI_IRQn);
|
||||
stm32_exti_enable(TOUCH_INT_EXTI_Line,
|
||||
LL_EXTI_TRIGGER_RISING,
|
||||
_gt911_exti_isr);
|
||||
}
|
||||
|
||||
static void TOUCH_AF_GPIOConfig(void)
|
||||
@@ -799,18 +788,6 @@ struct TouchState touchPanelRead()
|
||||
return internalTouchState;
|
||||
}
|
||||
|
||||
#if !defined(TOUCH_INT_EXTI_IRQHandler)
|
||||
#error "TOUCH_INT_EXTI_IRQHandler is not defined"
|
||||
#endif
|
||||
extern "C" void TOUCH_INT_EXTI_IRQHandler(void)
|
||||
{
|
||||
if (LL_EXTI_IsEnabledIT_0_31(TOUCH_INT_EXTI_Line) &&
|
||||
LL_EXTI_IsActiveFlag_0_31(TOUCH_INT_EXTI_Line)) {
|
||||
touchEventOccured = true;
|
||||
LL_EXTI_ClearFlag_0_31(TOUCH_INT_EXTI_Line);
|
||||
}
|
||||
}
|
||||
|
||||
bool touchPanelEventOccured()
|
||||
{
|
||||
return touchEventOccured;
|
||||
|
||||
Reference in New Issue
Block a user