(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
+关注
关注
2295文章
11035浏览量
366003 -
串口
+关注
关注
15文章
1591浏览量
80251
原文标题:STM32多串口共用printf打印串口数据
文章出处:【微信号:gh_dae0718828df,微信公众号:gh_dae0718828df】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
stm32串口通信用printf发送数据配置
基于STM32的printf串口数据输出

STM32中使用printf打印串口数据的实现原理及方法
STM32使用串口重定向系统printf函数输出时出现一初始化或使用printf函数系统卡死的原因及解决办法

STM32单片机基础09——重定向printf函数到串口输出的多种方法

stm32单片机串口使用printf及u3_printf

stm32printf函数的串口输出代码

STM32中串行通讯中printf函数的使用

stm32使用printf实现串口打印原理

评论