GD32F350 UART0 DMA控制数据发送

GD32F350的UART0 DMA数据发送

void usart0_dma_config(void)
{
    /* 定义一个DMA配置结构体 */
    dma_parameter_struct dma_init_struct;

    /* 使能 DMA 时钟 */
    rcu_periph_clock_enable(RCU_DMA);
  
    /* 初始化 DMA0 通道1 */
    dma_deinit(DMA_CH1);
    dma_init_struct.direction = DMA_MEMORY_TO_PERIPHERAL;    /* 存储器到外设方向 */
    dma_init_struct.memory_addr = (uint32_t)txdat;    /* 存储器基地址 */
    dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;  /* 存储器地址自增 */
    dma_init_struct.memory_width = DMA_MEMORY_WIDTH_8BIT;    /* 存储器位宽为8位 */
    dma_init_struct.number = 4;            /* 传输数据个数 */
    dma_init_struct.periph_addr = ((uint32_t)(USART0+0X28));    /* 外设基地址,即USART数据寄存器地址 */
    dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;  /* 外设地址固定不变 */
    dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_8BIT;  /* 外设数据位宽为8位 */
    dma_init_struct.priority = DMA_PRIORITY_MEDIUM;      /* 软件优先级为极高*/
    dma_init(DMA_CH1, &dma_init_struct);
    
    /* DMA循环模式配置,使用循环模式 */
    dma_circulation_enable(DMA_CH1);
    /* DMA存储器到存储器模式模式配置,不使用存储器到存储器模式*/
    dma_memory_to_memory_disable(DMA_CH1);

    /* DMA0 通道1 中断优先级设置并使能 */
    //nvic_irq_enable(DMA0_Channel3_IRQn, 0, 0);
    /* 使能 DMA0 通道1 传输完成、传输错误中断 */
    //dma_interrupt_enable(DMA0, DMA_CH3, DMA_INT_FTF|DMA_INT_ERR);
    /* 使能 DMA0 通道1 */
    dma_channel_enable(DMA_CH1);
}

之后在程序中使用如下指令开始传输数据:

usart_dma_transmit_config(USART0, USART_TRANSMIT_DMA_ENABLE);
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GD32F4系列是国内产的一款32位单片机系列,具有较强的性能和丰富的外设资源。其中,UART(通用异步收发传输技术)是一种常用的串行通信接口,DMA(直接内存访问)则是一种数据传输方式。 在GD32F4系列中,UART DMA是通过配置DMA控制器来实现UART数据传输的。通过使用DMA传输数据,可以减轻CPU的负载,提高数据传输效率。 首先,需要对UARTDMA进行初始化配置。使用DMA之前,需要确定要传输数据的源地址和目的地址,并设置数据长度和传输方向。然后,需要配置UART的通信参数,包括波特率、数据位数、停止位数、校验位等。接下来,要配置DMA控制器,设置DMA传输的工作模式、传输大小、传输方向、源地址和目的地址等。 在数据传输过程中,DMA控制器可以实现自动传输,无需CPU的干预。当满足条件时,DMA将自动启动数据传输操作,并将数据从源地址传输到目的地址。在传输完成后,DMA可以通过中断或回调函数来通知CPU。 使用UART DMA时,可以实现高速、稳定的数据传输。通过配置合适的数据传输参数,可以实现不同数据长度和传输方向的需求。同时,UART DMA也提供了灵活的数据传输方式,可以根据需求选择单次传输或循环传输。 总之,GD32F4的UART DMA功能能够使数据传输更加高效和可靠,减轻CPU负载,提高系统性能。它在许多应用中都有广泛的应用,如通信、嵌入式系统、工业自动化等。 ### 回答2: gd32f4是一款由国家数字集成电路工程技术研究中心(NMC)设计的32位微控制器,具有低功耗、高性能和丰富的外设功能。其中,UART(Universal Asynchronous Receiver Transmitter)是一种通用异步收发器,用于与外部设备进行串行通信。 gd32f4的UART外设支持通过DMA(Direct Memory Access)进行数据传输,即可以直接在内存与外设之间传输数据,而无需CPU的干预。通过使用DMA,可以提高数据传输的效率,并释放CPU的负载,使其能够同时处理其他任务。 使用gd32f4的UART DMA,我们可以实现高效的数据传输。具体步骤如下: 1. 配置UART的工作模式和波特率。 2. 配置DMA通道的工作模式和传输方向,包括内存地址、外设地址、传输数据长度等。 3. 启动DMA传输。 4. 等待DMA传输完成的中断或标志位,并进行相应的处理。 在实际应用中,可以利用UART DMA实现大量数据的高速传输,如串口打印、数据采集、通信等。通过使用DMA,可以减少CPU的负担,提高系统的响应速度和效率。 总之,gd32f4的UART DMA是一种便捷高效的数据传输方式,可以大大提高系统的性能和效率,广泛应用于各种嵌入式系统和通信设备中。 ### 回答3: GD32F4系列是一款基于ARM Cortex-M4内核的微控制器系列,它提供了丰富的外设和功能,其中包括UARTDMAUART通用异步收发传输器是一种常用的串行通信接口,用于将数据以逐位的方式从一个设备传输到另一个设备。GD32F4系列的UART外设通过提供多个UART通道、调制解调器控制、数据长度和校验等功能,使得串行通信变得非常简单和灵活。 DMA是直接存储器访问控制器,它允许外设与内存之间直接进行数据传输,而无需使用CPU的介入。在GD32F4系列中,DMA能够与UART外设配合使用,实现高效率的串行数据传输。通过设置DMA通道和相关的数据缓冲区地址,可以实现UART数据的自动传输。DMA的使用极大地减轻了CPU的负担,提高了系统的响应速度和资源利用率。 在GD32F4系列中使用UARTDMA可以实现高效的数据通信。首先,通过初始化UART通道和DMA通道,配置相关的参数,如波特率、数据位数、停止位数等。然后,通过启动UARTDMA传输,可以实现数据的收发。无须CPU的干预,UARTDMA之间的数据传输可以在后台自动完成,从而实现高效的数据通信。 总之,使用GD32F4系列的UARTDMA可以方便地实现串行数据的收发,提高系统的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值