重定向打印
#include <stdarg.h>
#include "stm32f1xx_hal.h" // 根据你的STM32型号调整头文件
void uart1_printf(const char *format, ...) {
char buffer[256];
va_list args;
va_start(args, format);
vsnprintf(buffer, sizeof(buffer), format, args);
va_end(args);
HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
}
void uart2_printf(const char *format, ...) {
char buffer[256];
va_list args;
va_start(args, format);
vsnprintf(buffer, sizeof(buffer), format, args);
va_end(args);
HAL_UART_Transmit(&huart2, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
}
// 确保在main()或某个初始化函数中正确配置了huart1和huart2
usart.c
#include "stdio.h"
#include <string.h>
#include <stdarg.h>
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
//就能使用
//printf( "1\r\n");