STM32
直播中

洒下墨色

9年用户 917经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

多串口共用printf函数怎么实现?

多串口共用printf函数怎么实现?

回帖(1)

何培芬

2021-12-1 09:22:55

(1)问题描述:
多串口共用printf函数,百度到的资料大部分是建议重新写一个xx_printf(format, …)。但是使用起来还是不方便,就此问题而言加上一个判断语句便可解决。
(2)解决方法:
printf函数最后调用的是int fputc(int ch, FILE *f),那么重新改写此函数便可。
(3)代码:


//标志量定义
int USART_PRINTF_FLAG = 2;//默认串口2


//改写fputc
int 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...
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分