是否有可能在STM32f0完成的DMA中途获得中断

问题描述 投票:3回答:2

我有一个要更新的循环DMA。中途完成时是否有可能中断(所以我可以更新前半部分)?

interrupt stm32 dma
2个回答
4
投票

是,只需将适当的通道配置寄存器中的HTIE位置1,例如

DMA1_Channel2->CCR |= DMA_CCR_HTIE;

对于通道2,在开始传输之前。不要忘记设置优先级,并启用中断。

在中断处理程序中,检查它是否确实是半传输中断,清除标志,然后进行必要的处理。

void DMA1_Channel2_3_IRQHandler(void) {
    if(DMA1->ISR & DMA_ISR_HTIF2) {
        DMA1->IFCR = DMA_IFCR_CHTIF2;
        memcpy(here, there, length/2);
    }
}

0
投票

没有频道,只有流。

可能被读取的位

READ_BIT(DMA1->HISR ,DMA_HISR_HTIF5);

或者也许是这样?

DMA1_Stream5-> CRR |= DMA_HISR_HTIF5;
© www.soinside.com 2019 - 2024. All rights reserved.