九、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.rhkb.cn/news/439932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【重学 MySQL】五十六、位类型

【重学 MySQL】五十六、位类型 定义赋值与使用注意事项应用场景 在MySQL数据库中,位类型(BIT类型)是一种用于存储位字段值的数据类型。 定义 BIT(n)表示n个位字段值,其中n是一个范围从1到64的整数。这意味着你可以存储从1位到64…

【AIGC】AI时代的数据安全:使用ChatGPT时的自查要点

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯法律法规背景中华人民共和国保守秘密法中华人民共和国网络安全法中华人民共和国个人信息保护法遵守法律法规的重要性 💯ChatGPT的数据使用特点ChatGPT数据安全…

YOLOv11 vs YOLOv8:谁才是真正的AI检测之王?

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Js逆向分析+Python爬虫结合

JS逆向分析Python爬虫结合 特别声明📢:本教程只用于教学,大家在使用爬虫过程中需要遵守相关法律法规,否则后果自负!!! 完整代码地址Github:https://github.com/ziyifast/ziyifast-co…

28 Vue3之搭建公司级项目规范

可以看到保存的时候ref这行被提到了最前面的一行 要求内置库放在组件的前面称为auto fix,数组new arry改成了字面量,这就是我们配置的规范 js规范使用的是airbnb规范模块使用的是antfu 组合prettier&eslint airbnb规范: https://github…

重磅来袭!CMSIS-DAP 脱机烧录器 EasyFlasher 发布~

重磅来袭!CMSIS-DAP 脱机烧录器 EasyFlasher 发布~ 目录 重磅来袭!CMSIS-DAP 脱机烧录器 EasyFlasher 发布~相关文章1、前言1、产品特点2、功能说明3、支持芯片4、关于烧录5、写在最后 某宝店铺:觉皇工作室 购买链接:https://item…

缓存数据减轻服务器压力

问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存缓存代码 /*** 根据分类id查询菜品** @pa…

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…

[Linux] Linux 初识进程地址空间 (进程地址空间第一弹)

标题:[Linux] Linux初识进程地址空间 个人主页水墨不写bug (图片来源于AI) 目录 一、什么是进程地址空间 二、为什么父子进程相同地址的变量的值不同 三、初识虚拟地址、页表 一、什么是进程地址空间 其实,在很久之前&#xf…

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM 一,文档简介二, 功能实现2.1 软硬件平台2.2 软件控制流程2.3 资源分配概览2.4 EB 配置2.4.1 Dio module2.4.2 Icu module2.4.4 Mcu module2.4.5 Platform module2.4.6 Port module2.4.7 Pwm module 2.5 …

STM32+ADC+扫描模式

1 ADC简介 1 ADC(模拟到数字量的桥梁) 2 DAC(数字量到模拟的桥梁),例如:PWM(只有完全导通和断开的状态,无功率损耗的状态) DAC主要用于波形生成(信号发生器和音频解码器) 3 模拟看门狗自动监…

Oracle架构之数据库备份和RAC介绍

文章目录 1 数据库备份1.1 数据库备份分类1.1.1 逻辑备份与物理备份1.1.2 完全备份/差异备份/增量备份 1.2 Oracle 逻辑备份1.2.1 EXP/IMP1.2.1.1 EXP导出1.2.1.2 EXP关键字说明1.2.1.3 导入1.2.1.4 IMP关键字说明 1.2.2 EXPDP/IMPDP1.2.2.1 数据泵介绍1.2.2.2 数据泵的使用 1.…

通过 Groovy 实现业务逻辑的动态变更

Groovy 1、需求的提出2、为什么是Groovy3、设计参考1_引入Maven依赖2_GroovyEngineUtils工具类3_GroovyScriptVar类4_脚本规则表设计5_对应的实体类6_数据库访问层7_GroovyExecService通用接口 4、测试5、其他的注意事项6、总结 1、需求的提出 在我们日常的开发过程中&#xf…

嵌入式知识点复习(一)

国庆倒数第二天,进行嵌入式课堂测试的复习: 第一章 绪论 1.1 嵌入式系统的概念 嵌入式系统定义 嵌入式系统定位 嵌入式系统形式 嵌入式系统三要素 嵌入式系统与桌面通用系统的区别 1.2 嵌入式系统的发展历程 微处理器的演进历史 单片机的演进历史 …

【易社保-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

【Python】数据可视化之聚类图

目录 clustermap 主要参数 参考实现 clustermap sns.clustermap是Seaborn库中用于创建聚类热图的函数,该函数能够将数据集中的样本按照相似性进行聚类,并将聚类结果以矩阵的形式展示出来。 sns.clustermap主要用于绘制聚类热图,该热图通…

用manim实现Gram-Schmidt正交化过程

在线性代数中,正交基有许多美丽的性质。例如,由正交列向量组成的矩阵(又称正交矩阵)可以通过矩阵的转置很容易地进行反转。此外,例如:在由彼此正交的向量张成的子空间上投影向量也更容易。Gram-Schmidt过程是一个重要的算法&#…

Python Tips6 基于数据库和钉钉机器人的通知

说明 起因是我第一版quant程序的短信通知失效了。最初认为短信是比较即时且比较醒目的通知方式,现在看来完全不行。 列举三个主要问题: 1 延时。在早先还能收到消息的时候,迟滞就很严重,几分钟都算短的。2 完全丢失。我手机没有…

AI 时代:产品经理不“AI”就出局?

即便你没想去做“AI 产品经理”,那你也不能成为一个不会用 AI 的产品经理。 产品经理肯定是所有互联网从业者中,最先捕捉到 AI 趋势的岗位。 但只知道 AI、关注 AI 还不够,仔细审视一下:你自己的工作,被 AI 提效了么…