暂时只格式化了%s和%c,需要其他格式化的可自行添加,后续也可能更新 标准库 #include <stdarg.h> //需要包含的头文件--->任意参数功能需要 void UART_printf(USART_TypeDef *USARTx, const char *fmt, ...) { va_list args; va_start(args, fmt); while (*fmt != '\0') { if (*fmt == '%') { fmt++; if (*fmt == 'c') { char c = va_arg(args, int); while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); USART_SendData(USARTx, (uint16_t)c); } else if (*fmt == 's') { char *s = va_arg(args, char*); while (*s) { while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); USART_SendData(USARTx, (uint16_t)*s); s++; } } //如果需要请自行添加其他格式如%d。。。。 } else { while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); USART_SendData(USARTx, (uint16_t)*fmt); } fmt++; } va_end(args); }