//=====================[USART0_TX = DMA_CH1]=====================
dma_deinit(USART0_TX_DMA_CH); //复位DMA通道的相关寄存器
dma_memory_to_memory_disable(USART0_TX_DMA_CH); //CTL.M2M=0,禁用存储器到存储器模式
dma_transfer_direction_config(USART0_TX_DMA_CH,DMA_MEMORY_TO_PERIPHERAL); //CTL.DIR,传输方向为存储器到外设
dma_circulation_disable(USART0_TX_DMA_CH); //CTL.CMEN=0禁用循环模式
dma_priority_config(USART0_TX_DMA_CH,DMA_PRIORITY_HIGH); //CTL.PRIO[1:0]通道的软件优先级
dma_memory_width_config(USART0_TX_DMA_CH,DMA_MEMORY_WIDTH_8BIT); //CTL.MWIDTH[1:0]配置存储器单个数据宽度
dma_periph_width_config(USART0_TX_DMA_CH,DMA_PERIPHERAL_WIDTH_16BIT); //CTL.PWIDTH[1:0]配置外设单个数据宽度
dma_memory_increase_enable(USART0_TX_DMA_CH); //CTL.MNAGA存储器地址生成算法为递增
dma_periph_increase_disable(USART0_TX_DMA_CH); //CTL.PNAGA外设地址生成算法为固定不变
//dma_interrupt_enable(USART0_TX_DMA_CH,DMA_INT_FTF); //CTL.FTFIE 使能传输完成中断
//dma_interrupt_enable(USART0_TX_DMA_CH,DMA_INT_HTF); //CTL.HTFIE 使能半传输完成中断
//dma_interrupt_enable(USART0_TX_DMA_CH,DMA_INT_ERR); //CTL.ERRIE 使能传输错误中断
dma_memory_address_config(USART0_TX_DMA_CH, (uint32_t)USART0_tx_dma_buf); //配置存储器基地址
dma_periph_address_config(USART0_TX_DMA_CH, (uint32_t)&USART_TDATA(USART0)); //配置外设基地址为USART0的TDATA寄存器地址
dma_transfer_number_config(USART0_TX_DMA_CH,0); //CNT寄存器,设置传输长度
//dma_channel_enable(USART0_TX_DMA_CH);//使能通道
//=====================[USART0_RX = DMA_CH2]=====================
dma_deinit(USART0_RX_DMA_CH); //复位DMA通道的相关寄存器
dma_memory_to_memory_disable(USART0_RX_DMA_CH); //CTL.M2M=0,禁用存储器到存储器模式
dma_transfer_direction_config(USART0_RX_DMA_CH,DMA_PERIPHERAL_TO_MEMORY); //CTL.DIR,传输方向为外设到存储器
dma_circulation_enable(USART0_RX_DMA_CH); //CTL.CMEN=1 打开循环模式
dma_priority_config(USART0_RX_DMA_CH,DMA_PRIORITY_HIGH); //CTL.PRIO[1:0]通道的软件优先级
dma_memory_width_config(USART0_RX_DMA_CH,DMA_MEMORY_WIDTH_8BIT); //CTL.MWIDTH[1:0]配置存储器单个数据宽度
dma_periph_width_config(USART0_RX_DMA_CH,DMA_PERIPHERAL_WIDTH_16BIT); //CTL.PWIDTH[1:0]配置外设单个数据宽度
dma_memory_increase_enable(USART0_RX_DMA_CH); //CTL.MNAGA存储器地址生成算法为递增
dma_periph_increase_disable(USART0_RX_DMA_CH); //CTL.PNAGA外设地址生成算法为固定不变
//dma_interrupt_enable(USART0_RX_DMA_CH,DMA_INT_FTF); //CTL.FTFIE 使能传输完成中断
//dma_interrupt_enable(USART0_RX_DMA_CH,DMA_INT_HTF); //CTL.HTFIE 使能半传输完成中断
//dma_interrupt_enable(USART0_RX_DMA_CH,DMA_INT_ERR); //CTL.ERRIE 使能传输错误中断
dma_memory_address_config(USART0_RX_DMA_CH, (uint32_t)USART0_rx_dma_buf); //配置存储器基地址
dma_periph_address_config(USART0_RX_DMA_CH, (uint32_t)&USART_RDATA(USART0)); //配置外设基地址为USART0的RDATA寄存器地址
dma_transfer_number_config(USART0_RX_DMA_CH,USART0_RX_DMA_BUF_SIZE); //CNT寄存器,设置传输长度
//dma_channel_enable(USART0_RX_DMA_CH);//使能通道
|