打印

DMA串口1发送+printf函数的DMA实现,解放CPU

[复制链接]
445|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你说说说说|  楼主 | 2020-4-26 17:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是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);//发送
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

355

主题

355

帖子

1

粉丝