×
单片机 > 单片机程序设计 > 详情

STM32多串口共用printf打印串口数据

发布时间:2020-08-26 发布时间:
|

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

}


关键字:STM32  多串口  printf打印  串口数据 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法