九、3 串口发送+printf函数移植+打印汉字

1、接线图

TX与RX交叉连接,TXD接STM32的PA10,RXD接STM32的PA9

VCC与3.3V用跳线帽连接

2、函数介绍

3、代码部分

(1)发送字节的函数(Byte)

可直接发送十六进制数 如0x41,也可直接发送字符 如'A'

常用的汉字字符集有GB2312、GBK、GB18030等。

收录了所有国家的字符的字符集:Unicode字符集,常用传输形式是UTF8

(2)发送数组的函数(Array)

传递数组需要使用指针

(3)发送字符串的函数(String)

\0对应空字符,是字符串结束的标志位

可以写成0 或 '\0'

(4)发送字符形式的数字

在电脑上显示字符串形式的数字

需要把Number的个位、十位、百位等,以十进制拆分开,然后转换成字符数字对应的数据,依次发送出去

如12345

取万位,12345/10000%10=1(除以一万,再对10取余)

取千位,12345/1000%10=2(除以一千,再对10取余)

取哪一位,就 /10^x%10

4、printf函数的移植方法

(1)使用printf之前,需要打开工程选项

MicroLIB是Keil为嵌入式平台优化的一个精简库

(2)还需要对printf进行重定向,将printf函数打印的东西输出到串口,因为printf函数默认是输出到屏幕,而单片机没有屏幕,所以要进行重定向

在串口模块里最开始加上#include,之后在后面重写fputc函数,把fputc重定向到串口

fputc是printf函数的底层,printf函数在打印时,不断调用fputc函数一个个打印的,把fputc函数重定向到了串口,那printf就输出到串口了

5、(1)多串口使用printf

可以用sprintf,sprintf可以把格式化字符输出到一个字符串里,sprintf可以指定打印位置,所以不涉及重定向问题,所以每个串口都可以用sprintf进行格式化打印。

可以先定义一个字符串,再打印到字符串,再发送字符串

(2)封装sprintf

printf这类函数支持可变的参数,参数个数不固定。

先在头文件里添加头文件 #include,

然后在最后对sprintf进行封装

sprintf只能接收直接写的参数,对于封装格式的参数要用vsprintf

6、显示汉字的操作方法

(1)编码格式选UTF8

串口助手也需要选择UTF8,才能解码正确

(2)编译器不报错的方法

打开工程选项

(3)若软件对UTF8兼容性不好,可切换为GB2312编码

打开配置

串口助手里选择GBK编码,一般Windows软件默认的就是GBK的编码,GBK与GB2312一样,都是中文的编码,基本都是兼容的

若已经工程已经选好了编码格式,可使用转码软件进行批量转码,使用时应关闭文件的只读

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

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

相关文章

关于函数模板的一些不为人知的用法

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 关于函数模板,大家都不陌生。但是如下的函数模板,大家肯定没有见过 没有提供任何特例化的模板 不管我们传入的是什么类型的参数,都可以匹配到这个模板【所以又被称为…

基于Springboot+Vue的在线问诊系统的设计与实现(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

动手学大模型应用开发之大模型简介

动手学大模型应用开发之大模型简介 主要学习目标什么是大语言模型大模型的能力和特点涌现能力作为基座模型支持多元应用的能力支持对话作为统一入口的能力大模型特点 常见大模型ChatGpt通义千问 LangChainLangChain的核心模块 总结相关学习链接 主要学习目标 学习如何进行大模…

Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法

Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法 FesianXu 20241006 at Wechat Search Team 前言 在多模态大模型(Multimodal Large Language Model, MLLM)中,视觉特征就像…

ai智能论文生成系统有用吗?分享5款ai文献综述自动生成器

近年来,人工智能(AI)技术在学术写作领域的应用越来越广泛,尤其是在文献综述的自动生成方面。AI智能论文生成系统通过深度学习和自然语言处理技术,能够帮助研究人员快速生成高质量的文献综述,从而提高写作效…

安可数据库产品目录

‌国家安可数据库产品目录包括以下主要产品‌: ‌华为GaussDB、openguass: 由华为云计算技术有限公司提供。‌金仓数据库管理系统:由中电科金仓(北京)科技股份有限公司提供。‌神通数据库管理系统:由天津神…

【Python】Python知识总结浅析

Python是一种高级编程语言,由Guido van Rossum于1991年首次发布。它以简洁的语法和强大的功能著称,适用于多种应用场景,包括Web开发、数据分析、人工智能、自动化脚本等。 易于学习和使用:Python的语法简洁明了,适合初…

AEye激光雷达公司的战略调整与成本控制分析

AEye激光雷达公司的战略调整与成本控制分析 当地时间9月3日,美国激光雷达领域的知名上市公司AEye在其向美国证券交易委员会(SEC)提交的8-K报告中披露了一项重大战略调整措施。报告指出,作为公司全面成本控制计划的一部分,AEye已对员工总数进行了大幅缩减,减少比例约达三分…

容器领航者:Kubernetes集群部署秘籍

目录 前言 一、ubernetes简介 1.1 应用部署方式演变 1.2 容器编排应用 1.3 kubenetes简介 二、Kubernetes核心概念 2.1 K8S各个组件用途 2.2 K8S 各组件之间的调用关系 2.3 K8S 的常用名词感念 2.4 k8S的分层架构​编辑 三、部署前的准备 3.1 k8s中容器的管理方式 3…

Java体系中的异常

1. 异常 1.1 异常的概念 在Java中,我们将程序执行过程中发生的不正常行为称为异常。异常是在程序运行过程中发生的错误或意外情况,它打破了程序的正常执行流程。在Java中通过面向对象的编程思想,我们也将这些扰乱程序正常执行的行为用类组织…

LeetCode Hot100 | Day1 | 二叉树:二叉树的直径

LeetCode Hot100 | Day1 | 二叉树:二叉树的直径 主要学习内容: 二叉树深度求法 深度的 leftright1 得到的是从根结点到叶子结点的节点数量 543.二叉树的直径 [543. 二叉树的直径 - 力扣(LeetCode)](https://leetcode.cn/prob…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【262-271】

262. 回顾上一章内容 看视频 263. IDEA介绍 263.1 IDEA 介绍 IDEA 全称 IntelliJ IDEA在业界被公认为最好的 Java 开发工具IDEA 是 JetBrains 公司的产品,总部位于捷克的首都布拉格除了支持 Java 开发,还支持 HTML,CSS,PHP&am…

Qt之TCP收发图片的例子

一.效果 二.实现 1.发图片 void MainWindow::slotSendImage() {matrix.rotate(90);QPixmap tempPixmap = pixmap.transformed(matrix);QBuffer buffer;tempPixmap.save(&buffer,"jpg");ui->labelImage->setPixmap(tempPixmap);int dataLength = buffer.d…

[图形学]在半球面上均匀采样和cos加权采样

一、简介 本文介绍了如何在半球表面上进行半球面均匀采样、半球面cos加权采样采样。 给出了相关公式推导和python代码实现。 二、在半球上采样 0.预备知识 1).球面坐标系与笛卡尔坐标系 在半球面上采样时,常使用球面坐标系。先采样球面坐标系下的坐标参数 ( θ…

python sqlite3 工具函数

起因, 目的: sqlite3 最常用的函数。 比如,某人给了一个 database.db 文件。 但是你登录的时候,不知道账号密码。 此文件就是,查看这个数据库的详细内容。 有哪些表某个表的全部内容。添加数据 代码, 见注释 impor…

《数字图像处理基础》学习01-数字图像处理的相关基础知识

这篇文章只是对数字图像处理的相关基础知识有个大概的了解,之后的文章会接着补充和扩展。 目录 一,图像的基本概念 1,图像 2,图像的分类 1)物理图像 2)虚拟图像 二,数字图像处理 三&…

PostGIS--介绍

目录 1、什么是PostGIS?2、数据2.1 对象2.1.1 读取几何元数据信息函数2.1.2 处理点的函数2.1.3 处理线的函数2.1.4 处理面的函数2.1.5 集合 2.2 集合输入和输出2.3 shapefile文件 总结PS: 1、什么是PostGIS? PostGIS通过增加对空间类型、空间索引和空间…

【MaskGAN】MaskGAN: Towards Diverse and Interactive Facial Image Manipulation

文章目录 MaskGAN: Towards Diverse and Interactive Facial Image Manipulationkey points贡献方法密集映射网络DMN编辑行为模拟训练多目标学习CelebAMask-HQ数据集实验消融实验总结MaskGAN: Towards Diverse and Interactive Facial Image Manipulation 会议/期刊:CVPR 202…

实现mnist手写数字识别

基础知识 tensorflow TensorFlow是一个开源的机器学习框架,致力于各种数据流图的自动微分和深度神经网络的计算。简而言之,** TensorFlow帮助我们轻松地构建、训练和部署机器学习模型** 。它可以在各种平台上运行,包括桌面计算机、服务器…

Dyna-slam复现(保姆级详细图文版,百分百成功)

因最近论文要和这些算法做对比,故配置了一下,在此记录 因为是老的算法,cuda版本现在的显卡都不能使用,所以笔者找的电脑是华硕飞行堡垒17年的电脑,1080的显卡 深度学习及maskrcnn配置 先将dyna-slam git下来,终端执行 git clone https://github.com/BertaBescos/Dyna…