1 /** 2 * 函 数:使用printf需要重定向的底层函数 3 * 参 数:保持原始格式即可,无需变动 4 * 返 回 值:保持原始格式即可,无需变动 5 */ 6 int fputc(int ch, FILE *f) 7 { 8 Serial_SendByte(ch); 9 return ch; 10 } 11 12 /** 13 * 函 数:自己封装的prinf函数 14 * 参 数:format 格式化字符串 15 * 参 数:... 可变的参数列表 16 * 返 回 值:无 17 */ 18 void Serial_Printf(char *format, ...) 19 { 20 char string[100]; 21 va_list arg; 22 va_start(arg,format); 23 vsprintf(string,format,arg); 24 va_end(arg); 25 Serial_SendString(string); 26 }
printf的函数是固定的,不可以更改,只能定义一次,因此只能重定向一个串口
sprintf的函数不是固定的,是自己取的,因此我们可以写多个类似的函数,只要不重名就行了,因此可以同时重定向多个串口
使用: