串口输出是单片机基本的外设使用,也是必须基本的一项基本技能,为了使用输出打印函数,一般都会重定向串口输出,但是一般都会指定串口,要是想多个串口都能使用输出打印要怎么实现呢,这篇文章就来聊聊;
核心代码如下:
#include "hal_printf.h" #define USART_TXBUFF_SIZE 256 //定义串口发送缓冲区大小 256字节 __align(8) char usart_txBuff[USART_TXBUFF_SIZE]; //字节对齐缓冲区 // 自定义printf() void USART_printf(uint32_t usart_periph, char *fmt,...) { uint32_t i,length; va_list ap; va_start(ap,fmt); vsprintf(usart_txBuff,fmt,ap); va_end(ap); length=strlen((const char*)usart_txBuff); for(i=0;i
头文件如下:
#ifndef __HAL_PRINTF_H__ #define __HAL_PRINTF_H__ #include "gd32f10x.h" #include "stdio.h" #include "stdarg.h" #include "string.h" void USART_printf(uint32_t usart_periph, char *fmt,...); #endif /* __HAL_USART_H__ */
使用方法如下:
USART_printf(USART0, "test "); USART_printf(USART2, "test ");
核心就是剩余参数和vsprintf函数,有兴趣的同学可以找度娘补补知识,把上面的代码放到HAL层,再初始化硬件串口即可使用,遍历发送那里需要根据实际硬件进行修改,多串口打印输出可以提高调试效率;
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !