diff --git a/targets/TARGET_STM/stm_dma_utils.c b/targets/TARGET_STM/stm_dma_utils.c index 49ea4adf952..28ce4ec17c4 100644 --- a/targets/TARGET_STM/stm_dma_utils.c +++ b/targets/TARGET_STM/stm_dma_utils.c @@ -399,7 +399,7 @@ IRQn_Type stm_get_dma_irqn(const DMALinkInfo *dmaLink) case 2: switch(dmaLink->channelIdx) { -#ifdef TARGET_MCU_STM32G0 +#if defined(TARGET_MCU_STM32G0) // STM32G0 does its own thing and has all DMA2 channels under 1 IRQ case 1: case 2: @@ -924,6 +924,77 @@ void DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler(void) } #endif +#elif defined(TARGET_MCU_STM32U0) + +void DMA1_Channel2_3_IRQHandler(void) +{ + if(stmDMAHandles[0][1] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][1]); + } + if(stmDMAHandles[0][2] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][2]); + } +} + +#ifdef DMA2 +void DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX_OVR_IRQHandler(void) +{ + if(stmDMAHandles[0][3] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][3]); + } + if(stmDMAHandles[0][4] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][4]); + } + if(stmDMAHandles[0][5] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][5]); + } + if(stmDMAHandles[0][6] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][6]); + } + if(stmDMAHandles[1][0] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[1][0]); + } + if(stmDMAHandles[1][1] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[1][1]); + } + if(stmDMAHandles[1][2] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[1][2]); + } + if(stmDMAHandles[1][3] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[1][3]); + } + if(stmDMAHandles[1][4] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[1][4]); + } +} +#elif defined(DMA1_Channel7) +void DMA1_Ch4_7_DMAMUX_OVR_IRQHandler(void) +{ + if(stmDMAHandles[0][3] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][3]); + } + if(stmDMAHandles[0][4] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][4]); + } + if(stmDMAHandles[0][5] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][5]); + } + if(stmDMAHandles[0][6] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][6]); + } +} +#else +void DMA1_Ch4_5_DMAMUX_OVR_IRQHandler(void) +{ + if(stmDMAHandles[0][3] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][3]); + } + if(stmDMAHandles[0][4] != NULL) { + HAL_DMA_IRQHandler(stmDMAHandles[0][4]); + } +} +#endif + #elif defined(TARGET_MCU_STM32L0) void DMA1_Channel2_3_IRQHandler(void)