自定义一个printf函数通过DMA技术实现UART1打印输出功能
发布时间
阅读量:
阅读量
今日在研究DMA技术时,突然产生了一个想法,是否可以通过DMA对printf函数进行重定向。尝试了许久却始终未能成功,输出结果全是乱码。因此决定换一种方式,通过自定义一个与printf功能相同的函数,实现数据的DMA传输,从而有效节省单片机的资源。
具体实现思路如下:
在STM32F103ZET6这款芯片中,可以通过配置DMA来实现对printf函数输出路径的重新设定,使其不再默认使用串口进行输出,而是通过DMA将数据发送至内存。
具体的实施步骤包括以下几个方面:
1 首先完成UART和DMA模块的配置工作,确保UART的数据发送功能能够借助DMA完成。
2 接着定义一个字符型数组作为数据输出的缓存区,并设置好DMA传输过程中的源地址与目标地址。
3 然后编写一个自定义的输出函数,在该函数内部实现字符串的拼接操作,并通过DMA通道将数据发送出去。
4 最后将该自定义输出函数替代原有的标准输出流函数。
以下是相关代码实现
#include <string.h>
#include <stdarg.h>
//自定义printf函数,通过dma实现串口1打印输出
#define BUFSIZE 100
char buffer[BUFSIZE];
void custom_printf(const char *fmt,
全部评论 (0)
还没有任何评论哟~
