|
|
若CHEN位被清零时DMA传输还未完成,重新使能CHEN位DMA传输将分两种情况:
– 在重新使能DMA通道前,未对该通道的相关寄存器进行操作,则DMA将继续完成上次的传输;
– 在重新使能DMA通道前,对相应通道的DMA_CHxCNT、DMA_CHxPADDR或DMA_CHxMADDR寄存器进行了操作,则DMA将开始一次新的传输。
◼ 若清零CHEN位时,DMA传输已经完成,之后未对相应通道的DMA_CHxCNT、DMA_CHxPADDR或DMA_CHxMADDR寄存器进行操作前便使能DMA通道,则不会触发任何DMA传输。
下面将用代码展示:
dma_channel_disable(DMA_CH0);
usart_dma_transmit_config(USART1, USART_TRANSMIT_DMA_DISABLE);
DMA_CHCNT(channelx) = len;
DMA_CHMADDR(channelx) = (uint32_t)buf;
usart_dma_transmit_config(USART1, USART_TRANSMIT_DMA_ENABLE);
dma_channel_enable(DMA_CH0);
|
|