技巧|多串口输出打印

描述

串口输出是单片机基本的外设使用,也是必须基本的一项基本技能,为了使用输出打印函数,一般都会重定向串口输出,但是一般都会指定串口,要是想多个串口都能使用输出打印要怎么实现呢,这篇文章就来聊聊;

核心代码如下:

 

#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层,再初始化硬件串口即可使用,遍历发送那里需要根据实际硬件进行修改,多串口打印输出可以提高调试效率;

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分