cancel
Showing results for 
Search instead for 
Did you mean: 

ADC3 interrupt handler not working on STM32H743

tl12
Visitor

I have the following problem with my STM32H743:

I want to use the ADC3 for an injected conversion, but the ADC3 interrupt does not call the 

ADC3_IRQHandler, instead the SysTick_Handler is called whenever an ADC3 interrupt happens. 
 
When I read the ISPR from the SysTick_Handler, I can check which interrupt is active and clear the interrupt in the ADC3 ISR register. (So technically I can get everything to work, but I don't want to handle the ADC3 interrupt in the SysTick_Handler)
 
I already read the NVIC registers while debugging and the ADC3 interrupt definitely happens, it just isn't handled by the right handler.
I also checked the ISR vector table in the FLASH to see, if the entry for the ADC3 interrupt holds the wrong value but it points to the ADC3_IRQHandler as it should.
 
I am all out of ideas where to look or what to look for anymore. 

This is what the SysTick_Handler looks like at the moment:

__irq void SysTick_Handler() {
    volatile int ipsr = __get_IPSR();

    if (ipsr == 15) {
        // do the systick thing
    } else if ((ipsr == 143) && (ADC3->ISR & ADC_ISR_JEOS)) {
        ADC3->ISR = ADC_ISR_JEOS;
        // do the ADC thing
    }
}

 Does anyone have an idea, what could cause this?

1 REPLY 1
TDK
Guru

> ADC3->ISR = ADC_ISR_JEOS;

Put a breakpoint on this line and, when it gets hit, show the value of the SCB->ICSR register in a screenshot, along with SCB->VTOR and the relevant entries in there for the 15th and 143rd interrupt addresses.

If you feel a post has answered your question, please click "Accept as Solution".