网上讲的添加printf()到程序中一般都是这样的(简要提一下): 1.配置GPIO ,USART,RCC 的Configuration 2.勾选usb micro lib 3.在程序中添加头文件需要添加#include ) #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { USART_SendData(USART1, (u8) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return ch; } 很明显这个方法使用printf()只能输出到usart1,如果需要使用多个usart呢,肯定不能都是用printf()。 方法如下是继续是用usart2的printf()功能: 1.配置usart2的串口配置,gpio,rcc enable,跟上面类似 2.勾选usb micro lib,跟上面类似 3.添加头文件#include ,编写USART2的printf函数: void USART2_printf (char *fmt, ...) { char buffer[CMD_BUFFER_LEN+1]; // CMD_BUFFER_LEN长度自己定义吧 u8 i = 0; va_list arg_ptr; va_start(arg_ptr, fmt); vsnprintf(buffer, CMD_BUFFER_LEN+1, fmt, arg_ptr); while ((i |
回复:STM32下多个串口的Printf用法