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?