Skip to content

Commit 069ef73

Browse files
Fix incorrect DMA ISR handlers being used on STM32U0 (#458)
1 parent 924e44b commit 069ef73

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

targets/TARGET_STM/stm_dma_utils.c

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ IRQn_Type stm_get_dma_irqn(const DMALinkInfo *dmaLink)
399399
case 2:
400400
switch(dmaLink->channelIdx)
401401
{
402-
#ifdef TARGET_MCU_STM32G0
402+
#if defined(TARGET_MCU_STM32G0)
403403
// STM32G0 does its own thing and has all DMA2 channels under 1 IRQ
404404
case 1:
405405
case 2:
@@ -924,6 +924,77 @@ void DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler(void)
924924
}
925925
#endif
926926

927+
#elif defined(TARGET_MCU_STM32U0)
928+
929+
void DMA1_Channel2_3_IRQHandler(void)
930+
{
931+
if(stmDMAHandles[0][1] != NULL) {
932+
HAL_DMA_IRQHandler(stmDMAHandles[0][1]);
933+
}
934+
if(stmDMAHandles[0][2] != NULL) {
935+
HAL_DMA_IRQHandler(stmDMAHandles[0][2]);
936+
}
937+
}
938+
939+
#ifdef DMA2
940+
void DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX_OVR_IRQHandler(void)
941+
{
942+
if(stmDMAHandles[0][3] != NULL) {
943+
HAL_DMA_IRQHandler(stmDMAHandles[0][3]);
944+
}
945+
if(stmDMAHandles[0][4] != NULL) {
946+
HAL_DMA_IRQHandler(stmDMAHandles[0][4]);
947+
}
948+
if(stmDMAHandles[0][5] != NULL) {
949+
HAL_DMA_IRQHandler(stmDMAHandles[0][5]);
950+
}
951+
if(stmDMAHandles[0][6] != NULL) {
952+
HAL_DMA_IRQHandler(stmDMAHandles[0][6]);
953+
}
954+
if(stmDMAHandles[1][0] != NULL) {
955+
HAL_DMA_IRQHandler(stmDMAHandles[1][0]);
956+
}
957+
if(stmDMAHandles[1][1] != NULL) {
958+
HAL_DMA_IRQHandler(stmDMAHandles[1][1]);
959+
}
960+
if(stmDMAHandles[1][2] != NULL) {
961+
HAL_DMA_IRQHandler(stmDMAHandles[1][2]);
962+
}
963+
if(stmDMAHandles[1][3] != NULL) {
964+
HAL_DMA_IRQHandler(stmDMAHandles[1][3]);
965+
}
966+
if(stmDMAHandles[1][4] != NULL) {
967+
HAL_DMA_IRQHandler(stmDMAHandles[1][4]);
968+
}
969+
}
970+
#elif defined(DMA1_Channel7)
971+
void DMA1_Ch4_7_DMAMUX_OVR_IRQHandler(void)
972+
{
973+
if(stmDMAHandles[0][3] != NULL) {
974+
HAL_DMA_IRQHandler(stmDMAHandles[0][3]);
975+
}
976+
if(stmDMAHandles[0][4] != NULL) {
977+
HAL_DMA_IRQHandler(stmDMAHandles[0][4]);
978+
}
979+
if(stmDMAHandles[0][5] != NULL) {
980+
HAL_DMA_IRQHandler(stmDMAHandles[0][5]);
981+
}
982+
if(stmDMAHandles[0][6] != NULL) {
983+
HAL_DMA_IRQHandler(stmDMAHandles[0][6]);
984+
}
985+
}
986+
#else
987+
void DMA1_Ch4_5_DMAMUX_OVR_IRQHandler(void)
988+
{
989+
if(stmDMAHandles[0][3] != NULL) {
990+
HAL_DMA_IRQHandler(stmDMAHandles[0][3]);
991+
}
992+
if(stmDMAHandles[0][4] != NULL) {
993+
HAL_DMA_IRQHandler(stmDMAHandles[0][4]);
994+
}
995+
}
996+
#endif
997+
927998
#elif defined(TARGET_MCU_STM32L0)
928999

9291000
void DMA1_Channel2_3_IRQHandler(void)

0 commit comments

Comments
 (0)