STM32:如何写出多串口共用printf函数语句?

描述

  (1)问题描述: 多串口共用printf函数,百度到的资料大部分是建议重新写一个xx_printf(format, …)。但是使用起来还是不方便,就此问题而言加上一个判断语句便可解决。

  (2)解决方法: printf函数最后调用的是int fputc(int ch, FILE *f),那么重新改写此函数便可。

  (3)代码:

  //标志量定义

  int USART_PRINTF_FLAG = 2;//默认串口2

  //改写

  fputcint fputc(int ch, FILE *f)

  {

  if (USART_PRINTF_FLAG == 2)

  {

  while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);

  USART_SendData(USART2,(uint8_t)ch);

  }

  else

  {

  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

  USART_SendData(USART1,(uint8_t)ch);

  }

  return ch;

  }

  //中断处理

  void USART1_IRQHandler(void)

  {

  USART_PRINTF_FLAG = 1;

  //your coding here.。.

  }

  void USART2_IRQHandler(void)

  {

  USART_PRINTF_FLAG = 2;

  //your coding here.。.

  }

串口

  

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
华震 2019-04-07
0 回复 举报
你确定这个是你的自己的原创么?转载不反对,至少你要表明出处吧?? 收起回复

全部0条评论

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

×
20
完善资料,
赚取积分