当前位置: 首页 > news >正文

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库中&#xff0c;常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。 2.1 基础配置 2.…...

29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

上篇介绍了计算机网络的基础知识&#xff0c;也提到互联网&#xff08;The Internet&#xff09;&#xff0c;本篇将会详细介绍互联网&#xff08;The Internet&#xff09;。 文章目录 1. 互联网&#xff08;The Internet&#xff09;组成及数据包传输过程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-移动和重命名文件找不同&#xff1a;选…...

React性能优化之Memo、useMemo

文章目录 React.memo两种方式参数应用场景 拓展useMemouseMemo(calculateValue, dependencies) 参考资料 React.memo React 的渲染机制&#xff0c;组件内部的 state 或者 props 一旦发生修改&#xff0c;整个组件树都会被重新渲染一次&#xff0c;即时子组件的参数没有被修改&…...

IDEA开启并配置services窗口

前言&#xff1a; 一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 方法一&#xff1a; 默认第一次打开项目的时候&#xff0c;idea会提示是否增加这个选项卡&#xff0c;如果你没…...

vue2企业级项目(三)

vue2企业级项目&#xff08;三&#xff09; 引入mockjs&#xff0c;i18n 1、mockjs 项目下载依赖 npm install --save-dev mock根目录创建mock文件夹&#xff0c;并创建mock/index.js import Mock from "mockjs";// 设置全局延时 没有延时的话有时候会检测不到数据…...

QT 在label上透明绘图

一、新建TransparentDemo工程 二、在界面上添加label&#xff0c;修改样式表&#xff0c;将底色置为红色&#xff0c;作为北京 三、新建一个TransparentLabel类&#xff0c;继承自QLabel 此时&#xff0c;工程包括文件 五、在transparentlabel.h中添加 头文件 #include …...

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文&#xff1a;https://arxiv.org/abs/2305.08196 25页综述&#xff0c;198篇参考文献&#xff01;52个开源项目&#xff01;本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展&#xff0c;…...

金融翻译难吗,如何做好金融翻译?

我们知道&#xff0c;金融翻译涉及企业经济这块的&#xff0c;是影响各公司发展很重要的一方面&#xff0c;翻译做得好&#xff0c;可以促进公司内外的交流&#xff0c;及时掌握各种信息&#xff0c;做好应对。那么&#xff0c;金融翻译难吗&#xff0c;如何做好金融翻译&#…...

Java面试题(Tomcat与Nginx)

Tomcat 什么是Tomcat&#xff1f; 简单来说是一个运行Java的网络服务器&#xff0c;也是jsp和serlvet的一个容器 Tomcat的缺省端口是多少&#xff0c;怎么修改? 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模式——哈希表篇(一)

刷题顺序及部分思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 部分思路来源于力扣官方题解&#xff0c;作者主页&#xff1a;https://leetcode.cn/u/leetcode-solution/ 242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个…...

WPF实战学习笔记31-登录界面全局通知

UI添加消息聚合器 <md:Snackbarx:Name"LoginSnakeBar"Grid.ColumnSpan"2"Panel.ZIndex"1"MessageQueue"{md:MessageQueue}" />注册提示消息 文件&#xff1a;Mytodo.Views.LoginView.cs构造函数添加内容 //注册提示消息 aggre…...

通用商城项目(中)

金山编译器出问题了。下面段落标号全出问题了&#xff0c;排版也出问题了。懒得改了。 使用对象存储OSS&#xff0c;保存品牌logo 新建Module&#xff0c;提供上传、显示服务 有些不明所以的&#xff0c;按照steinliving-commodity配置了一通pom.xml 新建application.yml&…...

谨慎使用JSON.stringify

谨慎使用JSON.stringify 为了避免因为对象是引用类型而造成的数据源污染&#xff0c;我们通常使用 JSON.stringify 将其转换为字符串&#xff0c;而后通过JSON.parse方法将字符串转化一个新对象来实现深拷贝。但是在这个过程中也会存在一些问题&#xff0c;本文就介绍一下使用…...

驱动开发day8

编写LED灯的驱动&#xff0c;使用GPIO子系统&#xff0c;里面添加按键的中断处理 1.应用程序发送指令控制LED亮灭 2.按键1 按下&#xff0c;led1电位反转 按键2按下&#xff0c;led2电位反转 按键3 按下&#xff0c;led3电位反转 驱动程序 #include <linux/init.h> #i…...

CAS 机制

问题分析与思考&#xff1a; CAS 是 Java 中 Unsafe 类里面的方法&#xff0c;它的全称是 CompareAndSwap&#xff0c;比较并交换 的意思。 它的主要功能是能够保证在多线程环境下&#xff0c;对于共享变量的修改的原子性。 举个例子&#xff0c;比如说有这样一个场景&#xff…...

#P1003. [NOIP2009普及组] 道路游戏

题目描述 小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路&#xff0c;马路上有 nn 个机器人工厂&#xff0c;两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点&#xff0c;按顺时针顺序依次将这 nn 个机器人工厂编号为 1\sim n1∼n&#xff0c;因…...

python-网络爬虫.regular

regular 正则表达式 (regular expression) 正则表达式(regular expression)描述了一种字符串匹配的模式 &#xff08;pattern&#xff09;&#xff0c; 可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串 中取出符合某个条件的子串等。 正则表达式是由普通…...

手动搭建gateway,项目集成gateway实现Token效果

目录 背景步骤1、首先创建springboot项目2、引入依赖3、配置文件&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;超级重要&#xff01;&#xff01;&#xff01;根据自己的需要进行配置&#xff09;4、相关类我们在服务中进行的白名单中接口的操作如…...

李慕婉-仙逆-造相Z-Turbo一键部署教程:基于Ubuntu20.04的快速环境搭建

李慕婉-仙逆-造相Z-Turbo一键部署教程&#xff1a;基于Ubuntu20.04的快速环境搭建 1. 开篇&#xff1a;为什么选择这个方案&#xff1f; 如果你对AI绘画感兴趣&#xff0c;特别是想自己动手部署一个功能强大的开源模型来玩玩&#xff0c;那今天这个教程就是为你准备的。李慕婉…...

dry快速入门:10个核心功能带你玩转Docker管理

dry快速入门&#xff1a;10个核心功能带你玩转Docker管理 【免费下载链接】dry moncho/dry: dry&#xff08;Docker Run Commands&#xff09;是一款命令行工具&#xff0c;旨在简化对Docker容器的操作管理&#xff0c;提供了一种简洁的方式创建、启动、停止和删除Docker容器。…...

次元画室一键部署教程:Python环境快速配置与模型启动

次元画室一键部署教程&#xff1a;Python环境快速配置与模型启动 你是不是也对AI绘画感兴趣&#xff0c;想自己动手试试&#xff0c;结果被复杂的Python环境、CUDA版本、模型权重这些术语给吓退了&#xff1f;别担心&#xff0c;这种感觉我太懂了。几年前我第一次接触这些时&a…...

实战演练:基于kimi与快马平台快速开发一个交互式销售数据可视化看板

今天想和大家分享一个实战项目&#xff1a;如何用Kimi和InsCode(快马)平台快速搭建一个销售数据可视化看板。整个过程比我预想的顺利很多&#xff0c;特别适合需要快速验证业务需求的场景。 项目背景与需求拆解 最近在帮朋友的小型电商团队优化运营流程&#xff0c;他们最头疼…...

5步打造高效音乐体验:Listen1扩展的智能选择与效率提升指南

5步打造高效音乐体验&#xff1a;Listen1扩展的智能选择与效率提升指南 【免费下载链接】listen1_chrome_extension one for all free music in china (chrome extension, also works for firefox) 项目地址: https://gitcode.com/gh_mirrors/li/listen1_chrome_extension …...

大脑极简原理:比冯·诺依曼架构还简单的电磁路由网络 ——为什么意识和智能会从“对称判断”里自然涌现

前言&#xff1a;被复杂化的真相——大脑其实简单到爆我们从小被灌输一个观念&#xff1a;大脑是宇宙中最复杂的系统&#xff0c;860亿神经元、百万亿突触、无数神经递质&#xff0c;像一台精密到无法拆解的超级计算机。神经科学论文越写越长&#xff0c;模型越来越复杂&#x…...

零基础入门:5分钟学会用Ollama运行Granite-4.0-H-350M文本生成

零基础入门&#xff1a;5分钟学会用Ollama运行Granite-4.0-H-350M文本生成 1. 为什么选择Granite-4.0-H-350M Granite-4.0-H-350M是一个轻量级但功能强大的文本生成模型&#xff0c;特别适合初学者和资源有限的用户。它只有3.5亿参数&#xff0c;却能在普通电脑上流畅运行&am…...

Avalonia预览器罢工了?别慌,手把手教你排查和修复‘无法加载axaml预览’的坑

Avalonia预览器崩溃自救指南&#xff1a;从错误日志到配置优化的全链路解决方案 当你正沉浸在Avalonia跨平台UI开发的流畅体验中&#xff0c;突然发现预览窗口变成一片空白&#xff0c;右下角弹出"无法加载axaml预览"的红色警告——这种突如其来的开发中断&#xff0…...

揭秘联发科设备Bootloader解锁:mtkclient-gui实战指南与深度解析

揭秘联发科设备Bootloader解锁&#xff1a;mtkclient-gui实战指南与深度解析 【免费下载链接】mtkclient-gui GUI tool for unlocking bootloader and bypassing authorization on Mediatek devices (Not maintained anymore) 项目地址: https://gitcode.com/gh_mirrors/mt/m…...

技术驱动B端拓客升级:号码核验行业的痛点突围与发展新路径,氪迹科技核验筛选算法系统,法人股东核验,阶梯式价格

在B端市场竞争愈发精细化的当下&#xff0c;拓客工作的核心竞争力已从“广撒网”转向“精准触达”&#xff0c;而企业核心决策人的有效联系方式&#xff0c;正是精准拓客的关键载体。号码核验作为拓客流程的前置核心环节&#xff0c;直接决定着拓客投入的回报效率&#xff0c;更…...