This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 39572c4cf94b477f19735dfdf63a4f354796140c
Author: Darryl Ring <[email protected]>
AuthorDate: Fri Oct 30 15:02:26 2026 -0700

    arch/arm/stm32h5: Fix ADC interrupt dispatch
    
    Only handle ADC interrupts that are enabled in IER, so a shared
    interrupt no longer services flags of an ADC that did not raise it.
    
    Assisted-by: Claude:claude-opus-5-5
    Signed-off-by: Darryl Ring <[email protected]>
---
 arch/arm/src/stm32h5/stm32_adc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/src/stm32h5/stm32_adc.c b/arch/arm/src/stm32h5/stm32_adc.c
index 8e7d31113dd..df466522778 100644
--- a/arch/arm/src/stm32h5/stm32_adc.c
+++ b/arch/arm/src/stm32h5/stm32_adc.c
@@ -2106,19 +2106,19 @@ static int adc12_interrupt(int irq, void *context, void 
*arg)
 
 #ifdef CONFIG_STM32_ADC1
   regval  = getreg32(STM32_ADC1_ISR);
-  pending = regval & ADC_INT_MASK;
+  pending = regval & getreg32(STM32_ADC1_IER) & ADC_INT_MASK;
   if (pending != 0)
     {
-      adc_interrupt(&g_adcdev1, regval);
+      adc_interrupt(&g_adcdev1, pending);
     }
 #endif
 
 #ifdef CONFIG_STM32_ADC2
   regval  = getreg32(STM32_ADC2_ISR);
-  pending = regval & ADC_INT_MASK;
+  pending = regval & getreg32(STM32_ADC2_IER) & ADC_INT_MASK;
   if (pending != 0)
     {
-      adc_interrupt(&g_adcdev2, regval);
+      adc_interrupt(&g_adcdev2, pending);
     }
 #endif
 

Reply via email to