STM32如何从串口缓冲区提取某一个数显示到LCD上???

STM32如何从串口缓冲区提取某一个数显示到LCD上???,第1张

新开一个函数进行进制转换并输出一个字符
Fun_Hex2DecStr(int hex, uchar str_out);
十六进制转十进制的方法,以及+'0'转换为字符的方法,这些基本知识你应该都知道吧。

首先你要说明你用什么通信(串口,can,tcp,spi?),才能回答的具体。

给你举例介绍下,设置个缓存区,用串口传‘hello’为例。串口是1bit每次发,

uint8 buf[5] = {‘hello’};

buf的0-4内分别有一个字符,发送时把buf发送即可当然一般的通信buf都是有格式的,会加上报头,生命信号,功能吗,校验码之类的

stm32,串口接收字符串,一般都是通过串口中断函数进行接收。
串口每接收一个字符,都会产生一个中断。中断函数中判断是字符中断的话,就把这个字符存储起来。一个字符串接收完成之后,会产生一个帧中断。程序中判断接收到帧中断之后就可以对字符串进行处理。

一般数据,用串口传输的时候,通常都要规定一定的“格式”。 否则的话,一个字节顶多只能代表256种代码,用它充当普通数据显然很不够的。 通常人们采用的通信格式,有很多种,这里不便列举了。 如果您的要求非常低,也可以不必采用通用的格式,而是自己规定一些尽可能简单的格式。 例如,您要传送int型或unsigned int型的整数,那么可以规定连续发送两个字节,用先后两个字节拼成一个int型或unsigned int型的整数。例如先传送低字节,再传送高字节。 两个字节拼成一个整数,拼的办法很简单。例如,假设您的变量都定义成了unsigned的,那么假如第一次收到的字符是c1,第二次收到的字符是c2,拼成的无符号整数就是: (unsigned int)c2<<8 + c1 至于如何转换成十进制,更简单,直接用printf语句输出,其中的格式符%u或%d都具有转化成十进制的功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13337074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-17
下一篇 2023-07-17

发表评论

登录后才能评论

评论列表(0条)

保存