打印

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

[复制链接]
229|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
miyuhao|  楼主 | 2025-3-29 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

主题

6

帖子

0

粉丝