From 70ab9964611bd9f97cb0992b11e7624aca7f0803 Mon Sep 17 00:00:00 2001 From: Gabriel Zerbib Date: Sun, 14 Jun 2026 10:15:40 +0200 Subject: [PATCH 1/2] stm32: do not declare ADC interrupts unless using SIMPLEFOC_STM32_ADC_INTERRUPT --- .../hardware_specific/stm32/stm32f1/stm32f1_hal.cpp | 3 ++- .../hardware_specific/stm32/stm32g4/stm32g4_hal.cpp | 3 ++- .../hardware_specific/stm32/stm32h7/stm32h7_hal.cpp | 3 ++- .../hardware_specific/stm32/stm32l4/stm32l4_hal.cpp | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp index ced24e0e0..10530ca45 100644 --- a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp @@ -190,7 +190,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } - +#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT extern "C" { void ADC1_2_IRQHandler(void) { @@ -207,5 +207,6 @@ extern "C" { } #endif } +#endif #endif \ No newline at end of file diff --git a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp index 7879f145f..585e170e4 100644 --- a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp @@ -246,7 +246,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } - +#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT extern "C" { void ADC1_2_IRQHandler(void) { @@ -279,4 +279,5 @@ extern "C" { } #endif } +#endif #endif \ No newline at end of file diff --git a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp index c7f65f86f..5d3878c18 100644 --- a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp @@ -227,7 +227,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } - +#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT extern "C" { void ADC_IRQHandler(void) { @@ -247,5 +247,6 @@ extern "C" { } } #endif +#endif #endif \ No newline at end of file diff --git a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp index 3a9639b4e..741257da1 100644 --- a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp @@ -245,6 +245,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } +#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT extern "C" { void ADC1_2_IRQHandler(void) { @@ -277,5 +278,6 @@ extern "C" { } #endif } +#endif #endif \ No newline at end of file From f3d64aeaddcf11b07fec83b34ab4cb557bd9d000 Mon Sep 17 00:00:00 2001 From: Gabriel Zerbib Date: Wed, 7 Oct 2026 16:08:56 +0200 Subject: [PATCH 2/2] Invert ADC interrupt disable logic --- .../hardware_specific/stm32/stm32f1/stm32f1_hal.cpp | 2 +- .../hardware_specific/stm32/stm32f1/stm32f1_mcu.cpp | 2 +- .../hardware_specific/stm32/stm32f4/stm32f4_mcu.cpp | 2 +- .../hardware_specific/stm32/stm32f7/stm32f7_mcu.cpp | 2 +- .../hardware_specific/stm32/stm32g4/stm32g4_hal.cpp | 2 +- .../hardware_specific/stm32/stm32g4/stm32g4_mcu.cpp | 4 +--- .../hardware_specific/stm32/stm32h7/stm32h7_hal.cpp | 2 +- .../hardware_specific/stm32/stm32h7/stm32h7_mcu.cpp | 2 +- .../hardware_specific/stm32/stm32l4/stm32l4_hal.cpp | 2 +- .../hardware_specific/stm32/stm32l4/stm32l4_mcu.cpp | 2 +- 10 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp index 10530ca45..b29058dc4 100644 --- a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_hal.cpp @@ -190,7 +190,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK extern "C" { void ADC1_2_IRQHandler(void) { diff --git a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_mcu.cpp index 7b0e90248..ce1e95b61 100644 --- a/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32f1/stm32f1_mcu.cpp @@ -16,7 +16,7 @@ // array of values of 4 injected channels per adc instance (5) uint32_t adc_val[5][4]={0}; -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0 diff --git a/src/current_sense/hardware_specific/stm32/stm32f4/stm32f4_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32f4/stm32f4_mcu.cpp index 7bace501a..68c0b524a 100644 --- a/src/current_sense/hardware_specific/stm32/stm32f4/stm32f4_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32f4/stm32f4_mcu.cpp @@ -14,7 +14,7 @@ #define _ADC_VOLTAGE_F4 3.3f #define _ADC_RESOLUTION_F4 4096.0f -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0 diff --git a/src/current_sense/hardware_specific/stm32/stm32f7/stm32f7_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32f7/stm32f7_mcu.cpp index d8bac8d86..dcb8128e6 100644 --- a/src/current_sense/hardware_specific/stm32/stm32f7/stm32f7_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32f7/stm32f7_mcu.cpp @@ -17,7 +17,7 @@ // array of values of 4 injected channels per adc instance (5) uint32_t adc_val[5][4]={0}; -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0 diff --git a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp index 585e170e4..ebe594e21 100644 --- a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_hal.cpp @@ -246,7 +246,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK extern "C" { void ADC1_2_IRQHandler(void) { diff --git a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_mcu.cpp index 68b501480..be7f342ca 100644 --- a/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32g4/stm32g4_mcu.cpp @@ -11,15 +11,13 @@ #include "stm32g4_hal.h" #include "Arduino.h" -// #define SIMPLEFOC_STM32_ADC_INTERRUPT - #define _ADC_VOLTAGE_G4 3.3f #define _ADC_RESOLUTION_G4 4096.0f // array of values of 4 injected channels per adc instance (5) uint32_t adc_val[5][4]={0}; -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0 diff --git a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp index 5d3878c18..dd7c22ebf 100644 --- a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_hal.cpp @@ -227,7 +227,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK extern "C" { void ADC_IRQHandler(void) { diff --git a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_mcu.cpp index 31f2c16be..2e190d710 100644 --- a/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32h7/stm32h7_mcu.cpp @@ -18,7 +18,7 @@ // array of values of 4 injected channels per adc instance (5) uint32_t adc_val[5][4]={0}; -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0 diff --git a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp index 741257da1..bbc432dec 100644 --- a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_hal.cpp @@ -245,7 +245,7 @@ int _adc_gpio_init(Stm32CurrentSenseParams* cs_params, const int pinA, const int return 0; } -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK extern "C" { void ADC1_2_IRQHandler(void) { diff --git a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_mcu.cpp b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_mcu.cpp index 9bd4a33f2..1a80bc138 100644 --- a/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_mcu.cpp +++ b/src/current_sense/hardware_specific/stm32/stm32l4/stm32l4_mcu.cpp @@ -19,7 +19,7 @@ // array of values of 4 injected channels per adc instance (5) uint32_t adc_val[5][4]={0}; -#ifdef SIMPLEFOC_STM32_ADC_INTERRUPT +#if !SIMPLEFOC_STM32_ADC_DISABLE_RC_FALLBACK #define USE_ADC_INTERRUPT 1 #else #define USE_ADC_INTERRUPT 0