我用的是HAL库,实现的串口1 的DMA传输。具体配置见附件代码。下面介绍下printf的DMA实现:
/**
*printf打印函数
* @param format printf格式
*/
void printf_dma(const char *format, ...)
{
uint32_t length;
va_list args;
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
va_start(args, format);
length = vsnprintf((char*)print_buffer, sizeof(print_buffer), (char*)format, args);//格式化内容
va_end(args);
USART_DMA_SendData(&huart1, print_buffer, length);//发送
} |