(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.。.
}

-
STM32
+关注
关注
2305文章
11120浏览量
371129 -
串口
+关注
关注
15文章
1607浏览量
81932
原文标题:STM32多串口共用printf打印串口数据
文章出处:【微信号:gh_dae0718828df,微信公众号:gh_dae0718828df】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
基于STM32的printf串口数据输出
STM32中使用printf打印串口数据的实现原理及方法
STM32使用串口重定向系统printf函数输出时出现一初始化或使用printf函数系统卡死的原因及解决办法
STM32单片机基础09——重定向printf函数到串口输出的多种方法
stm32单片机串口使用printf及u3_printf
stm32printf函数的串口输出代码
STM32中串行通讯中printf函数的使用
stm32使用printf实现串口打印原理

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