#include "stm32f4xx_hal.h"
#include <stdio.h>
// 假设存在两个输出目标
extern UART_HandleTypeDef huart1; // UART1
extern UART_HandleTypeDef huart2; // UART2
// 自定义 fputc,区分不同的 FILE * 流
int fputc(int ch, FILE *f) {
if (f == stdout) {
// 输出到 UART1
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
} else if (f == stderr) {
// 输出到 UART2
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
}
return ch;
}
int main(void) {
// 初始化硬件
HAL_Init();
SystemClock_Config();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
// 使用不同流
fprintf(stdout, "Output to UART1\n");
fprintf(stderr, "Output to UART2\n");
while (1) {
// 主循环
}
}
标签:fputc,ch,HAL,重定向,UART,嵌入式,UART1,Init From: https://blog.csdn.net/2301_79517417/article/details/145161407