问答

汇集网友智慧,解决技术难题

21ic问答首页 - GD32使用DMA发送问题

DMA SAR USART AN ST

GD32使用DMA发送问题

A星星之火2021-03-08
本帖最后由 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是正常的
回答 +关注 16
1642人浏览 0人回答问题 分享 举报
0 个回答

您需要登录后才可以回复 登录 | 注册