diff --git a/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.c b/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.c index 2a41ec3b7..7b56760e4 100644 --- a/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.c +++ b/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.c @@ -66,12 +66,13 @@ static struct { /*===========================================================================*/ static void mdma_serve_interrupt(const stm32_mdma_channel_t *mdmachp) { - uint32_t flags; + uint32_t flags, eflags; flags = mdmachp->channel->CISR; + eflags = mdmachp->channel->CESR; mdmachp->channel->CIFCR = flags; if (mdmachp->func != NULL) { - mdmachp->func(mdmachp->param, flags); + mdmachp->func(mdmachp->param, flags | (eflags << 16)); } } diff --git a/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.h b/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.h index bdc8bbbf9..d5e2eb4c4 100644 --- a/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.h +++ b/os/hal/ports/STM32/LLD/MDMAv1/stm32_mdma.h @@ -277,7 +277,8 @@ * @brief STM32 MDMA ISR function type. * * @param[in] p parameter for the registered function - * @param[in] flags content of the CISR register + * @param[in] flags content of the CISR register in the lower 16 bits, + * content of the CESR register in the upper 16 bits */ typedef void (*stm32_mdmaisr_t)(void *p, uint32_t flags);