九、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一样,都是中文的编码,基本都是兼容的

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值