打印

GD32使用DMA发送问题

[复制链接]
1570|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

粉丝