miyuhao 发表于 2025-3-29 20:57

gd32f4 串口1 dma发送,数据发送不了不知道什么地方配置错了

void usart1_init(uint32_t bound)
{
    rcu_periph_clock_enable(RCU_GPIOA);   /* 使能GPIOA时钟 */
    rcu_periph_clock_enable(RCU_USART1);    /* 使能串口时钟 */

    gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_2);
    gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_3);

    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);

    usart_deinit(USART1);                                 /* 复位USART0 */
    usart_baudrate_set(USART1, bound);                  /* 设置波特率 */
    usart_stop_bit_set(USART1, USART_STB_1BIT);         /* 一个停止位 */
    usart_word_length_set(USART1, USART_WL_8BIT);         /* 字长为8位数据格式 */
    usart_parity_config(USART1, USART_PM_NONE);         /* 无奇偶校验位 */
    usart_transmit_config(USART1, USART_TRANSMIT_ENABLE); /* 使能发送 */
    usart_receive_config(USART1, USART_RECEIVE_ENABLE);   /* 使能接收 */
    usart_enable(USART1);                                        /* 使能串口 */
}
void uart1_dma_config(void)
{   
   dma_single_data_parameter_struct dma_init_struct;
   rcu_periph_clock_enable(RCU_DMA0);
   dma_deinit(DMA0, DMA_CH6);                                       //DMA0通道6串口1发送配置
   dma_init_struct.direction = DMA_MEMORY_TO_PERIPH;
   dma_init_struct.memory0_addr = (uint32_t)buffer;
   dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
   dma_init_struct.periph_memory_width = DMA_PERIPH_WIDTH_8BIT;
   dma_init_struct.number = BUFFER_SIZE;
   dma_init_struct.periph_addr = (uint32_t)&USART_DATA(USART1);
   dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
   dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;
   dma_single_data_mode_init(DMA0, DMA_CH6,&dma_init_struct);
   /* configure DMA mode */
   dma_circulation_disable(DMA0, DMA_CH6);
   dma_channel_subperipheral_select(DMA0, DMA_CH6, DMA_SUBPERI4);
   usart_dma_transmit_config(USART1, USART_TRANSMIT_DMA_ENABLE);   //使能串口1 DMA发送         
}



页: [1]
查看完整版本: gd32f4 串口1 dma发送,数据发送不了不知道什么地方配置错了