printf函数实际是一个宏,最终调用的是 fputc(int chFILE *f)这个函数,所以要想使用指定的串口就需要修改这个函数。
int fputc(int chFILE *f){ while(USART_GetFlagStatus(USART2USART_FLAG_TC) != SET); USART_SendData(USART2(unsigned char)ch); while(USART_GetFlagStatus(USART2USART_FLAG_TC) != SET); return (ch); }
应该是 printf 里面的串口写死了。
自己实现也不难,可以重新封装,把串口当作参数,传进去,传进去哪个串口发送到哪个串口。