简介
这篇文章介绍了串口+DMA的接收过程:GD32F130之FreeRTOS环境下USART+DMA接收不定长数据_哈士奇去买菜的博客-CSDN博客
本文主要介绍串口+DMA的发送过程。
起因
起初我的发送代码写的是下面这种实现:
void USART0_printf(const char*format , ...)
{
int tx_len;
va_list args;
//将要发送的数据写入到DMA发送缓冲区USART0_tx_dma_buf
va_start(args,format);
tx_len = vsnprintf((char*)USART0_tx_dma_buf,USART0_TX_DMA_BUF_SIZE,format,args);
va_end(args);
if(tx_len>0)
{
dma_channel_disable(USART0_TX_DMA_CH); //关闭DMA通道,这样才能设置传输长度
dma_transfer_number_config(USART0_TX_DMA_CH,tx_len); //设置本次DMA传输长度
dma_channel_enable(USART0_TX_DMA_C