018_STM32程序移植之_串口接收中文

发布者:温馨阳光最新更新时间:2024-08-16 来源: cnblogs关键字:STM32  程序移植 手机看文章 扫描二维码
随时随地手机看文章

(一)在平时数据传输中很少用到接收中文的情况,但是最近需要用到就花了半天时间来弄弄

(二)接收原理,从现在接收情况分析:一个中文占两个数据的空间,也就是两个十六进制可以转化成为一个中文

(三)示例情况,用Hex Editor来看看中文 “你好”,可以看到四个十六进制数据:0xc4,0xe3,0xba,0xc3

(四)我们的目的还是单片机通过串口来进行数据的接收,用CH340短接T和R看看发送“你好”也是会接收到十六进制0xc4,0xe3,0xba,0xc3

(五)从上面两点来看,一个中文占据两个数据,也就是说当我们发送“你好”给单片机时候实际中断了四次,接收到的数据分别为0xc4,0xe3,0xba,0xc3


那么我们就可以通过接收到的数据来将数据转化成为中文了,搜索GB2312表可以知道对应的“你” = 0xe3c4;;  '好' = 0xc3ba


也就是两位对应一个中文嘛,那么如何将0xc4,0xe3合成0xe3c4;;将0xba,0xc3合成0xc3ba,然后将数据转化成为字符形式就可使转化成为中文了


(六)通过C语言的方法来进行上面四个数据转化成为中文,我用的是VS中的C++来编译的,哪里都可以定义数组那些,如果出错请自行修改将定义放到前面来。


 1 #include

 2 #include

 3 using namespace std;

 4 char *Chinese(int table[],char length,char str[]);        /*将数据放进去得到字符出来*/

 5 int convert_data(int table[2]);

 6 void main(void)

 7 {

 8     /*GB2312,你的代码是0xe3c4,好的代码是0xc3ba,具体的可以使用软件Hex Editor来看看*/

 9     int test1[] = {0xe3c4};    /*你*/

10     printf('%srn',test1);

11     int test2[] = {0xc3ba};    /*好*/

12     printf('%srn',test2);

13 

14     /*单片机发送或者接收到“你好”,会得到下面四个数据,将下面四个数据转换成中文“你好”*/

15     int table[4] = {0xc4,0xe3,0xba,0xc3};

16     char str[100];

17                   /*输入数组  长度  返回保存地址*/

18     char *str4 = Chinese(table,4,str);

19     printf('%srn',str4);

20 }

21 

22 int convert_data(int table[2])        /*接收的两个数据转换成为一个数据*/

23 {

24     return (table[1] << 8)|table[0];

25 }

26 

27 char *Chinese(int table[],char length,char str[])        /*将数据放进去得到字符出来*/

28 {

29     int i = 0;

30     int data1[1];

31     char data2[100];

32     data1[0] = (table[i + 1] << 8)|table[i];            

33     sprintf(data2,'%s',data1);

34     strcpy(str,data2);                                /*先取第一个中文先*/

35     for(i = 2;i < length; i = i + 2)

36     {

37         data1[0] = (table[i + 1] << 8)|table[i];    /*将0xc4,0xe3弄成0xe3c4,将0xba,0xc3换成0xc3ba*/

38         sprintf(data2,'%s',data1);

39         strcat(str,data2);

40     }

41 

42     return str;

43 }


编译运行的结果

 

(七)STM32串口接收中文

(1)资料下载:https://download.csdn.net/download/xiaoguoge11/10804315

(2)视频演示:https://v.qq.com/x/page/g0800sirmx3.html


关键字:STM32  程序移植 引用地址:018_STM32程序移植之_串口接收中文

上一篇:021_STM32程序移植之_ESP8266连接onenet
下一篇:017_STM32程序移植之_AS608指纹模块

推荐阅读最新更新时间:2026-03-25 14:01

GD32F103移植STM32程序定时器开关
GD32F103移植STM32程序时,程序中有一段需要关闭定时器来保护变量不被修改,如下: TIM_Cmd( TIM4, DISABLE ); yen += coinBuf ; coinBuf =0; TIM_Cmd( TIM4, ENABLE ); 在STM32上运行没有问题,但放到GD32上运行不了,定时器起不来。需要改成如下关闭中断。 TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); yen += coinBuf ; coinBuf =0; TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
[单片机]
STM32开发笔记32:STM32F4定时器驱动程序移植
单片机型号:STM32F401 本文讲述移植STM32CubeMX生成的驱动程序到自己的项目中,以定时器为例。为什么要写这篇文章呢?是因为定时器移植这件事情耗费了我整整2天的时间,只因为一个特殊的地方没有注意到。把整个移植过程用文字记录下来,以利于自身其它程序的移植,并对本文的读者提供一些技术上的参考。 1、如果仅完成计时功能,在STM32CubeMX中设置比较简单,如下图所示,只需指定其时钟源即可。 2、对时钟进行进一步设置,这个在先前的日志中已经描述过,将分频系数与MCU的主频系数设置成一致,例如我现在MCU的主频是72M,则进行72分频即可,这样单位计数周期是1us,按照下图所示,我在Count
[单片机]
<font color='red'>STM32</font>开发笔记32:STM32F4定时器驱动<font color='red'>程序</font>的<font color='red'>移植</font>
STM32开发笔记44:RTC驱动程序移植
单片机型号:STM32F070F6P6 本文介绍,将RTC驱动程序移植到自己的工程项目中的方法。本项目仅使用了RTC的实时时钟功能,没有启动定时报警等功能。 1、在STM32CubeMX中对RTC进行配置,如下图所示,激活了时钟源和日历功能。 2、配置RTC的时钟,如下图所示,STM32F070F6P6不能接外部的32.768K的晶振,所以只能使用HSE或LSI RC供给,考虑LSI RC精度比较差,所以使用HSE作为RTC的时钟源,我现在接的HSE时钟为12MHz,由于其频率比较高,所以选择最大的分频系数,这里是32,则供给给RTC的频率为375KHz。 3、对RTC进行设置,如下图所示,这里只考虑S
[单片机]
<font color='red'>STM32</font>开发笔记44:RTC驱动<font color='red'>程序</font>的<font color='red'>移植</font>
STM32开发笔记66: 移植看门狗驱动程序到STM32L053R8T6
单片机型号:STM32L053R8T6 在文章STM32开发笔记45:看门狗驱动程序的移植已经介绍了看门狗驱动程序的移植方法,其实现的是将STM32CubeMX中的驱动程序,移植到自己已有的工程中。本文将介绍将STM32F070F6P6上的看门狗驱动程序移植到STM32L053R8T6的方法,步骤如下: 1、在1_bsp层引入STM32官方的驱动程序stm32l0xx_hal_iwdg.c,并修改stm32l0xx_hal_conf.h中的内容,使能内部看门狗,相关程序如下,然后进行编译,形成bsp.lib #define HAL_MODULE_ENABLED /*#define HAL_ADC_MODULE_ENA
[单片机]
Linux帧缓冲设备驱动程序框架及图形界面GUI的移植
硬件平台   S3C2410X是三星公司的基于ARM920T的S3C2410X芯片。S3C2410X集成了一个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM、触摸屏、USB、SPI、SD和MMC等控制器,4个具有PWM功能的计时器和1个内部时钟,8通道的10位ADC,117位通用I/O口和24位外部中断源,8通道10位AD控制器,处理器工作频率最高达到203MHz。   S3C2410中的LCD控制器可支持单色/彩色LCD显示器。支持彩色TFT时,可提供4/8/12/16位颜色模式,其中16位颜色模式下可以显示65536种颜色。配置LCD控制器重要的一步是指定显示缓冲区,显示的内容就是从缓冲区中读出的,其大小
[单片机]
013_STM32程序移植之_DS18B20
1. 测试环境:STM32C8T6 2. 测试模块:DS18B20模块 3. 测试接口: 1. DS18B20模块接口: DS18B20引脚 单片机引脚 VCC--------------------5V GND-------------------GND DATA------------------PB12 2. 串口使用串口一,波特率9600 单片机引脚 CH340引脚 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD 移植测试 测试串口一程序
[单片机]
013_STM32<font color='red'>程序</font><font color='red'>移植</font>之_DS18B20
017_STM32程序移植之_AS608指纹模块
BUG说明: 硬件接线图如图所示 STM32引脚 指纹模块引脚 功能 3.3V 3.3V PA3 Tx PA2 Rx GND GND PA1 WAK 3.3V Vt U+ 悬空 U- 悬空 STM32引脚 CH340引脚 GND GND 3.3V 3.3V TXD RXD RXD TXD 指纹模块的资料在这个文件,超级详细,里面包含了51和STM32的程序 本次移植修改战舰源码,不用屏幕来测试,只用串口助手来进行指纹模块的测试 测试是使用C8T6来进行测试,
[单片机]
017_STM32<font color='red'>程序</font><font color='red'>移植</font>之_AS608指纹模块
021_STM32程序移植之_ESP8266连接onenet
本次教程是使用STM32C8T6通过ESP8266-12F模块将数据传输到ONENET云端去,并且云端能够下发命令给单片机来实现云端控制。本次实验硬件设备:STM32C8T6最小系统,ESP8266-12F模块,wifi。下面是简单的设备传输结构图: /********************************神奇的分割线********************************/ 视频演示教程:https://v.qq.com/x/page/i0814q78no3.html 资料下载地址:https://download.csdn.net/download/xiaoguoge11/10858840 欢迎
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved