mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 16:55:36 +03:00
commit
09e8234117
2 changed files with 10 additions and 7 deletions
|
@ -36,13 +36,13 @@ typedef struct {
|
|||
|
||||
extiChannelRec_t extiChannelRecs[16];
|
||||
|
||||
// IRQ gouping, same on F103, F303, F40x, F7xx and H7xx.
|
||||
// IRQ gouping, same on F103, F303, F40x, F7xx, H7xx and G4xx.
|
||||
#define EXTI_IRQ_GROUPS 7
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
static const uint8_t extiGroups[16] = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 };
|
||||
static uint8_t extiGroupPriority[EXTI_IRQ_GROUPS];
|
||||
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
static const uint8_t extiGroupIRQn[EXTI_IRQ_GROUPS] = {
|
||||
EXTI0_IRQn,
|
||||
EXTI1_IRQn,
|
||||
|
@ -67,7 +67,7 @@ static const uint8_t extiGroupIRQn[EXTI_IRQ_GROUPS] = {
|
|||
#endif
|
||||
|
||||
static uint32_t triggerLookupTable[] = {
|
||||
#if defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
[BETAFLIGHT_EXTI_TRIGGER_RISING] = GPIO_MODE_IT_RISING,
|
||||
[BETAFLIGHT_EXTI_TRIGGER_FALLING] = GPIO_MODE_IT_FALLING,
|
||||
[BETAFLIGHT_EXTI_TRIGGER_BOTH] = GPIO_MODE_IT_RISING_FALLING
|
||||
|
@ -85,6 +85,9 @@ static uint32_t triggerLookupTable[] = {
|
|||
#if defined(STM32H7)
|
||||
#define EXTI_REG_IMR (EXTI_D1->IMR1)
|
||||
#define EXTI_REG_PR (EXTI_D1->PR1)
|
||||
#elif defined(STM32G4)
|
||||
#define EXTI_REG_IMR (EXTI->IMR1)
|
||||
#define EXTI_REG_PR (EXTI->PR1)
|
||||
#else
|
||||
#define EXTI_REG_IMR (EXTI->IMR)
|
||||
#define EXTI_REG_PR (EXTI->PR)
|
||||
|
@ -128,7 +131,7 @@ void EXTIConfig(IO_t io, extiCallbackRec_t *cb, int irqPriority, ioConfig_t conf
|
|||
extiChannelRec_t *rec = &extiChannelRecs[chIdx];
|
||||
rec->handler = cb;
|
||||
|
||||
#if defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
GPIO_InitTypeDef init = {
|
||||
.Pin = IO_Pin(io),
|
||||
.Mode = GPIO_MODE_INPUT | IO_CONFIG_GET_MODE(config) | triggerLookupTable[trigger],
|
||||
|
@ -197,7 +200,7 @@ void EXTIRelease(IO_t io)
|
|||
|
||||
void EXTIEnable(IO_t io, bool enable)
|
||||
{
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
uint32_t extiLine = IO_EXTI_Line(io);
|
||||
|
||||
if (!extiLine) {
|
||||
|
@ -254,7 +257,7 @@ void EXTI_IRQHandler(void)
|
|||
|
||||
_EXTI_IRQ_HANDLER(EXTI0_IRQHandler);
|
||||
_EXTI_IRQ_HANDLER(EXTI1_IRQHandler);
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
_EXTI_IRQ_HANDLER(EXTI2_IRQHandler);
|
||||
#elif defined(STM32F3)
|
||||
_EXTI_IRQ_HANDLER(EXTI2_TS_IRQHandler);
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
# warning "Unknown TARGET"
|
||||
#endif
|
||||
|
||||
#if defined(STM32F7) || defined(STM32H7)
|
||||
#if defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||
// Expose these for EXTIConfig
|
||||
#define IO_CONFIG_GET_MODE(cfg) (((cfg) >> 0) & 0x03)
|
||||
#define IO_CONFIG_GET_SPEED(cfg) (((cfg) >> 2) & 0x03)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue