首页 > 其他分享 >嵌入式中fputc重定向

嵌入式中fputc重定向

时间:2025-01-15 15:28:53浏览次数:3  
标签:fputc ch HAL 重定向 UART 嵌入式 UART1 Init

#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

相关文章

  • 嵌入式杂谈(问题解决一:使用HAL库时keil中代码的分区)
     如图,代码分区代码区域作用Privateincludes引入所需头文件,提供函数声明、类型定义和宏等Privatetypedef创建自定义数据类型,增强代码可读性与维护性Privatedefine定义常量和宏,方便代码修改与简化Privatemacro实现简单代码替换,简化代码逻辑Privatevariables声明和初始化......
  • 嵌入式学习录2
    数据类型运算符和表达式一、什么是编程用编程语言把人类的思想告诉计算机,让计算机解决人类的问题。是人类与计算机“交流”的途径。编程语言有很多种类:C语言pythonjava......等,本文章主要学习C语言。1、学习目标(1)语法//格式(2)编程思维 //思路(3)编程习惯二、常量......
  • 嵌入式学习录3
    书接上回数据类型运算符和表达式(2)一、转义字符及字符常量转义字符是由反斜杠\将后面的字符转换成其他的意义以下为转义字符及其作用:二、算术运算符+  加法-  减法*  乘法/  除法   注:1.如果是两个整型数相除效果相当于是整除    ......
  • STM32H743 嵌入式开发笔记(一):开发板元器件选型
    2025开年,心血来潮想要开发STM32H743单片机。上网搜寻了半天没找到自己喜欢的开发板,于是乎,我做了一个大胆的决定:作为一名硬件工程师,为何不做一块儿属于自己的开发板?废话不多说,直接开干!1. 电源部分1.1 供电接口供电接口当然采用USBType-C(MicroUSB早该被扔进历史的......
  • 嵌入式基础 C语言预科准备
    一、C语言的基本结构(1)、第一个C程序:helloworld配置部署好vsCode之后,就可以直接在上面写代码了,新建一个新的C程序文件,向屏幕输出一串字符“HelloWorld!”下面,从整体上来分析一下这个最简单的C语言程序,将这个最简程序的各个部分剖析清楚,明白我们写下的每一个字符的具体......
  • web.config站内301永久重定向代码示例
    注:此代码只适用于IIS服务器,如需要将123.asp重定向到123.html,请使用以下代码。修改说明: 在web.config文件中添加301重定向规则,将123.asp重定向到123.html。<?xmlversion="1.0"encoding="UTF-8"?><configuration><system.webServer><rewrite>......
  • 痞子衡嵌入式:我评上了2024年度电子星球(eestar)最强大脑
    今天收到了「电源网旗下电子星球」颁发的2024年度最强大脑奖牌,这是电子星球第二年给痞子衡颁奖了。这个奖牌设计得非常用心,区别于去年奖牌只能捧在手上,今年痞子衡可以把奖牌挂脖子上出去拉风了。从23年8月开始,电子星球小编每个工作日会转发一篇痞子衡的技术原创文章,直到24年6......
  • 嵌入式Linux SPI子系统驱动 通信协议原理 硬件 时序 深度剖析
    SPI(SerialPeripheralInterface,串行外设接口)是一种同步的串行通信协议,通常用于微控制器和外部设备(如传感器、存储器、显示屏等)之间的高速数据传输。SPI协议由主设备(Master)和从设备(Slave)组成,主设备发起通信并控制时序,而从设备根据主设备的指令进行响应。SPI使用4根信号线进行......
  • 《ARM Cortex-M3与Cortex-M4权威指南》 第2章 嵌入式软件开发简介
    2.1ARM微控制器是怎样构成的ARM微控制器通常由处理器内核(如Cortex-M3或Cortex-M4)、片上外设(如定时器、串口、ADC等)、内存(包括Flash用于存储程序代码,SRAM用于数据存储)以及总线系统组成。处理器内核负责执行指令,片上外设实现与外部设备的交互,内存用于存储程序和数据,总线......
  • 嵌入式系统Linux实时化(四)Xenomai应用开发测试
    1、Xenomai原生API任务管理Xenomai本身提供的一系列多任务调度机制,主要有以下一些函数:intrt_task_create(RT_TASKtask,constcharname,intstksize,intprio,intmode);任务的创建;intrt_task_start(RT_TASKtask,void(entry)(voidcookie),voidcookie)......