stm32(HAL库)使用printf函数打印到串口

news2024/11/24 22:35:29

目录

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 项目生成

 3、KEIL端程序整合

在usart.c函数最下方复制如下代码

#ifdef __GNUC__
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
  HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//阻塞方式打印
  return ch;
}

接着在usart.h、main.h中分别调用如下头文件。

#include "stdio.h"

最后设置如下

  4、效果测试

在主函数中进行打印测试,代码如下

printf("s");

串口调试助手显示如下图所示:

 

上文如有错误,恳请各位大佬指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

quartus工具篇——modelsim的使用

文章目录 quartus工具篇——modelsim的使用1、modelsim简介二、使用教程1、新建工程添加文件 2、生成编写仿真文件3、设置仿真4、开启功能仿真5、开启时序仿真6、总结参考视频: quartus工具篇——modelsim的使用 1、modelsim简介 Quartus Prime是一款由英特尔开发…

【JavaEE初阶】博客系统的前端页面设计

文案分享~ 许多人终其一生都想从别人身上找寻爱, 以为爱是自然界的第二个太阳。 却忘了自己才是那道照耀全世界的光。 文章目录 1.博客主要组成页面2.博客列表页3.博客详情页4.博客登录页5.博客编辑页 1.博客主要组成页面 博客主要是由四个页面组成.分别是: 博…

3.3 Bootstrap 按钮组

文章目录 Bootstrap 按钮组基本的按钮组按钮工具栏按钮的大小嵌套垂直的按钮组 Bootstrap 按钮组 按钮组允许多个按钮被堆叠在同一行上。当你想要把按钮对齐在一起时,这就显得非常有用。您可以通过 Bootstrap 按钮(Button) 插件 添加可选的 J…

数据结构(2.1)——时间复杂度和空间复杂度计算

前言 (1)因为上一篇博客:数据结构(2)—算法对于时间复杂度和空间复杂度计算的讲解太少。所以我在次增加多个案例讲解。 (2)上一篇已经详细介绍了,为什么我们的算法要使用复杂度这一个…

Docker部署jar包运行

目录 场景 方法 运行 场景 springboot项目,打包成jar包,想要放到docker中运行 这种方式就是运行一个jdk的容器,然后挂载其中的目录到宿主机,然后运行之后,就可以将需要运行的jar放在宿主机的挂载目录下,然后每次…

匈牙利算法解决英雄配色问题

匈牙利算法解决英雄配色问题 最近在开发中遇到了这种情况,策划要为每个英雄去做配色,一个英雄在表中可能有多个配色(可能重复),每次对局要选出五个英雄并让他们的颜色不同 (实际不是这个,简化成的这个需求)…

nacos面经详解

1 为什么要懂nacos的详细原理? 只要你简历写过你用过nacos,则大厂(阿里),尤其是使用过这款产品的大中厂,基本必问其中的原理。里面的设计理念还有很多分布式系统的原理值得学习和深究。 2 分布式理论基础…

进制转换详解(解释原理简单易懂)

前言:在网上看了许多篇关于不同进制之间如何转换的文章,包括很多浏览量上万的博客。大多都只是把转换的规则罗列了出来,例如十进制转二进制,可能大家都知道方法,“除以2反向取余数,直到商为0”。应用该方法…

黎曼猜想的验证

11 for n 1 : 100000 sum sum cos(14.134725*log(n))/(n^(-0.5)) end sum -1.1151e06

IDEA设置自动导包功能

IDEA设置自动导包功能 选择File--Settings--Edotor-General-Auto Import,勾选上下图中的选项后点击 OK 即可。导包无忧~~ Add unambiguous imports on the fly:自动导入不明确的结构 Optimize imports on the fly:自动帮我们优化导入的包

vep加密视频破解转换翻录为mp4教程

可能有很多人都没有听说过这个视频格式,这是大黄蜂云课堂播放器所独有的格式,只有通过该播放器才能够打开这个加密的视频,安全系数很高,但也极大的限制了一个视频的传播和播放。如果我们在网络上下载了vep格式的视频,可…

消息队列总结(2)- RabbitMQ Kafka RocketMQ运行架构

目录 1 RabbitMQ 1.1 工作原理 1.2 名词解释 1.3 交换机的几种类型 2 Kafka 2.1 工作原理 2.2 基本概念 3 RocketMQ 3.1 工作原理 3.2 基本概念 4 RabbitMQ & Kafka & RocketMQ的差异 5 参考文档 1 RabbitMQ 1.1 工作原理 1.【消息生产】生产者&#xff0…

TMS FNC Core Crack

TMS FNC Core Crack 跨框架核心层,用于创建丰富的可视化和非可视化组件。 特点 JSON读、写和解析功能 Base64和URL编码和解码 组件持久性 撤消/恢复管理器 数字、字母数字字符集的验证 消息、文件打开和保存对话框 轻松访问应用程序和文档文件夹 打开文件和URL 位图…

非对称加密算法关于公钥和私钥

公钥和私钥成对出现 公开的密钥叫公钥,只有自己知道的叫私钥 用公钥加密的数据只有对应的私钥可以解密 用私钥加密的数据只有对应的公钥可以解密 如果可以用公钥解密,则必然是对应的私钥加的密 如果可以用私钥解密,则必然是对应的公钥加的密 …

leetcode 17 电话号码的字母组合

题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 思路: 从示例上来说,输入"…

第十七章:Dual Attention Network for Scene Segmentation ——双重注意力网络用于场景分割

0.摘要 在本文中,我们通过基于自注意机制捕捉丰富的上下文依赖来解决场景分割任务。与以往通过多尺度特征融合来捕捉上下文的方法不同,我们提出了一种双重注意力网络(DANet),以自适应地将局部特征与全局依赖性相结合。…

.net6中WPF的串口通信和USB通信

之前写过串口通信,不过是winform的。 c#使用串口进行通信_c# 串口通信_故里2130的博客-CSDN博客 今天说一下,.net6中wpf的串口通信和USB通信,在工控行业中,这2种的方式非常多,还有网口通信,它们都是用来和…

TypeScript基础教程

ts与js区别 TypeScript is a syntactic sugar for JavaScript. TypeScript syntax is a superset of ECMAScript 2015 (ES2015) syntax. Every JavaScript program is also a TypeScript program. 语言层面:JavaScript和TypeScript都是ECMAScript(ECMA-2…

【布局优化】基于遗传算法的车间布局优化 车间设施布局优化【Matlab代码#50】

文章目录 【获取资源请见文章第5节:资源获取】1. 车间布局优化2. 基于GA的布局优化模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 车间布局优化 车间设施布置的规划一直是工业工程领域不断研究和探索的内容&am…

【2023江西省研究生数学建模竞赛】第二题 国际“合作-冲突”的演化规律研究 80页论文及Python代码

【2023江西省研究生数学建模竞赛】第二题 国际“合作-冲突”的演化规律研究 80页论文及Python代码 相关链接 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论…