STM32(HAL)多串口进行重定向(printf函数发送数据)
目录
1、简介
2.1 基础配置
2.1.1 SYS配置
2.1.2 RCC配置
2.2 串口外设配置
2.3 项目生成
3、KEIL端程序整合
4、效果测试
1、简介
在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。
2.1 基础配置
2.1.1 SYS配置

2.1.2 RCC配置

2.2 串口外设配置

接着将串口2、3分别打开,如下图所示:

2.3 项目生成


3、KEIL端程序整合
在usart.c函数最下方复制如下代码
void Uart_printf(UART_HandleTypeDef *huart,char *format, ...)
{char buf[512]; //定义临时数组,根据实际发送大小微调va_list args;va_start(args, format);uint16_t len = vsnprintf((char *)buf, sizeof(buf), (char *)format, args);va_end(args);HAL_UART_Transmit(huart,(uint8_t *)buf,len,1000);
}
接着在usart.h、main.h中分别调用如下头文件。
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
最后设置如下

4、效果测试
在主函数中进行打印测试,代码如
Uart_printf(&huart1,"%d\n",10);
串口调试助手显示如下图所示:

上文如有错误,恳请各位大佬指正。
相关文章:
STM32(HAL)多串口进行重定向(printf函数发送数据)
目录 1、简介 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 4、效果测试 1、简介 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。 2.1 基础配置 2.…...
29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)
上篇介绍了计算机网络的基础知识,也提到互联网(The Internet),本篇将会详细介绍互联网(The Internet)。 文章目录 1. 互联网(The Internet)组成及数据包传输过程2. IP 数据包的不足3…...
xShell常用命令
xShell常用命令 一、文件夹目录1、cd-更改目录2、mkdir-建立目录3、rm-删除目录4、pwd-查看当前路径5、rmdir-删除空目录 二、文件操作1、cat-显示文件内容2、diff-比较文件内容3、查看文件的名字和后缀4、ls-列出文件5、cp-复制文件6、mv-移动和重命名文件找不同:选…...
React性能优化之Memo、useMemo
文章目录 React.memo两种方式参数应用场景 拓展useMemouseMemo(calculateValue, dependencies) 参考资料 React.memo React 的渲染机制,组件内部的 state 或者 props 一旦发生修改,整个组件树都会被重新渲染一次,即时子组件的参数没有被修改&…...
IDEA开启并配置services窗口
前言: 一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时,如果要调试测需要依次启动各个项目比较麻烦。 方法一: 默认第一次打开项目的时候,idea会提示是否增加这个选项卡,如果你没…...
vue2企业级项目(三)
vue2企业级项目(三) 引入mockjs,i18n 1、mockjs 项目下载依赖 npm install --save-dev mock根目录创建mock文件夹,并创建mock/index.js import Mock from "mockjs";// 设置全局延时 没有延时的话有时候会检测不到数据…...
QT 在label上透明绘图
一、新建TransparentDemo工程 二、在界面上添加label,修改样式表,将底色置为红色,作为北京 三、新建一个TransparentLabel类,继承自QLabel 此时,工程包括文件 五、在transparentlabel.h中添加 头文件 #include …...
SAM(Segment Anything)大模型论文汇总
A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文:https://arxiv.org/abs/2305.08196 25页综述,198篇参考文献!52个开源项目!本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展,…...
金融翻译难吗,如何做好金融翻译?
我们知道,金融翻译涉及企业经济这块的,是影响各公司发展很重要的一方面,翻译做得好,可以促进公司内外的交流,及时掌握各种信息,做好应对。那么,金融翻译难吗,如何做好金融翻译&#…...
Java面试题(Tomcat与Nginx)
Tomcat 什么是Tomcat? 简单来说是一个运行Java的网络服务器,也是jsp和serlvet的一个容器 Tomcat的缺省端口是多少,怎么修改? conf文件夹下修改server.xml文件 <Connector connectionTimeout"20000" port"8080" p…...
React-使用mobx
React 中使用 mobx 配置开发环境 安装mobx和中间件工具 mobx-react-lite 只能函数组件中使用 yarn add mobx mobx-react-lite初始化 mobx 定义数据状态 state在构造器中实现数据响应式处理 makeAutoObservble定义修改数据的函数 action实例化 store 并导出 import { compute…...
LeetCode ACM模式——哈希表篇(一)
刷题顺序及部分思路来源于代码随想录,网站地址:https://programmercarl.com 部分思路来源于力扣官方题解,作者主页:https://leetcode.cn/u/leetcode-solution/ 242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个…...
WPF实战学习笔记31-登录界面全局通知
UI添加消息聚合器 <md:Snackbarx:Name"LoginSnakeBar"Grid.ColumnSpan"2"Panel.ZIndex"1"MessageQueue"{md:MessageQueue}" />注册提示消息 文件:Mytodo.Views.LoginView.cs构造函数添加内容 //注册提示消息 aggre…...
通用商城项目(中)
金山编译器出问题了。下面段落标号全出问题了,排版也出问题了。懒得改了。 使用对象存储OSS,保存品牌logo 新建Module,提供上传、显示服务 有些不明所以的,按照steinliving-commodity配置了一通pom.xml 新建application.yml&…...
谨慎使用JSON.stringify
谨慎使用JSON.stringify 为了避免因为对象是引用类型而造成的数据源污染,我们通常使用 JSON.stringify 将其转换为字符串,而后通过JSON.parse方法将字符串转化一个新对象来实现深拷贝。但是在这个过程中也会存在一些问题,本文就介绍一下使用…...
驱动开发day8
编写LED灯的驱动,使用GPIO子系统,里面添加按键的中断处理 1.应用程序发送指令控制LED亮灭 2.按键1 按下,led1电位反转 按键2按下,led2电位反转 按键3 按下,led3电位反转 驱动程序 #include <linux/init.h> #i…...
CAS 机制
问题分析与思考: CAS 是 Java 中 Unsafe 类里面的方法,它的全称是 CompareAndSwap,比较并交换 的意思。 它的主要功能是能够保证在多线程环境下,对于共享变量的修改的原子性。 举个例子,比如说有这样一个场景ÿ…...
#P1003. [NOIP2009普及组] 道路游戏
题目描述 小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路,马路上有 nn 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,按顺时针顺序依次将这 nn 个机器人工厂编号为 1\sim n1∼n,因…...
python-网络爬虫.regular
regular 正则表达式 (regular expression) 正则表达式(regular expression)描述了一种字符串匹配的模式 (pattern), 可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串 中取出符合某个条件的子串等。 正则表达式是由普通…...
手动搭建gateway,项目集成gateway实现Token效果
目录 背景步骤1、首先创建springboot项目2、引入依赖3、配置文件!!!!!(超级重要!!!根据自己的需要进行配置)4、相关类我们在服务中进行的白名单中接口的操作如…...
Vue绘图画布组件:零基础打造专业级绘图应用
Vue绘图画布组件:零基础打造专业级绘图应用 【免费下载链接】vue-drawing-canvas VueJS Component for drawing on canvas. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-drawing-canvas vue-drawing-canvas 是一个功能强大的Vue.js画布绘图组件&#x…...
魔兽世界宏编辑器终极指南:5分钟掌握GSE高级技能自动化
魔兽世界宏编辑器终极指南:5分钟掌握GSE高级技能自动化 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advanced-Macro-Compi…...
Shoelace赞助支持:打造开源项目可持续发展的终极指南
Shoelace赞助支持:打造开源项目可持续发展的终极指南 【免费下载链接】shoelace Shoelace is now Web Awesome. Come see what’s new! 项目地址: https://gitcode.com/gh_mirrors/sh/shoelace Shoelace(现已更名为Web Awesome)作为一…...
别再死记硬背!一张图+三个口诀,快速理解自反、对称、传递闭包怎么求
离散数学闭包运算:图解口诀实战,3分钟掌握核心技巧 第一次接触离散数学中的闭包运算时,很多同学都会被各种定义和符号绕晕。其实只要掌握几个简单的视觉化技巧,就能像搭积木一样轻松构建自反、对称和传递闭包。本文将用最直观的关…...
基于MCP协议实现AI助手调用本地快捷指令的完整指南
1. 项目概述:一个为AI助手“开眼”的桥梁最近在折腾AI工作流的朋友,可能都听说过MCP(Model Context Protocol)这个概念。简单来说,它就像给Claude、Cursor这类AI助手装上了一套“万能遥控器”,让它们能直接…...
2026年青岛GEO优化服务商TOP5,哪家性价比最高?
行业痛点分析青岛地区GEO(生成式引擎优化)领域面临显著的技术挑战。据行业调研显示,超65%的本地企业存在“错配展现”问题,非目标区域消耗了20%以上的营销预算,导致获客成本平均上升30%。同时,AI大模型&…...
边缘计算中ViT模型压缩与硬件加速技术解析
1. 边缘计算中的ViT模型压缩技术全景解析Vision Transformer(ViT)模型在计算机视觉领域展现出卓越性能的同时,其庞大的计算量和内存需求成为边缘设备部署的主要障碍。模型压缩技术通过降低模型复杂度,使其能够在资源受限的边缘设备…...
别只看参数!手把手教你用正点原子DS100抓取并分析PWM波形(附数据导出教程)
别只看参数!手把手教你用正点原子DS100抓取并分析PWM波形(附数据导出教程) 在嵌入式开发中,PWM信号调试是每个工程师都会遇到的场景。无论是电机控制、LED调光还是通信解码,精准捕获和分析PWM波形都是项目成败的关键。…...
SDN与OpenFlow架构解析及路由实现
1. SDN与OpenFlow架构解析在传统网络架构中,控制平面与数据平面紧密耦合,每个网络设备都需要独立维护路由表和转发决策。这种分布式架构虽然具有高可靠性,但也带来了管理复杂、配置繁琐、创新缓慢等问题。软件定义网络(SDN&#x…...
5分钟掌握AI图像分层:layerdivider智能图像处理实战指南
5分钟掌握AI图像分层:layerdivider智能图像处理实战指南 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作而烦恼吗&a…...
