GD32使用DMA发送问题

[复制链接]
1918|0
 楼主| A星星之火 发表于 2021-3-8 11:23 | 显示全部楼层 |阅读模式
本帖最后由 tyw 于 2021-3-8 14:02 编辑

void u3_printf(char* fmt,...)  
{  
    va_list ap;
    va_start(ap,fmt);
    vsprintf((char*)USART3_TX_BUF,fmt,ap);
    va_end(ap);

    dma_channel_disable(DMA0,DMA_CH1);
    dma_memory_address_config(DMA0,DMA_CH1,(uint32_t)USART3_TX_BUF);
    dma_transfer_number_config(DMA0,DMA_CH1,strlen((const char*)USART3_TX_BUF));
    dma_channel_enable(DMA0,DMA_CH1);   
    usart_dma_transmit_config(USART2, USART_DENT_ENABLE);//使能串口DMA发送
    while(RESET == dma_flag_get(DMA0, DMA_CH1, DMA_FLAG_FTF)){};
    /* wait DMA Channel transfer complete */
    memset(USART3_TX_BUF,0,USART3_MAX_SEND_LEN);
}



如上代码:第一次发送正常,第二次发送,对端只能收到相应长度的空字符怀疑是第二次发送的时候没有从首地址开始发送,同样代码stm32是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部