串口接收数据与分析处理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33835307/article/details/81098417

一、每接受完一个字节的数据,进入一次中断。

u8 USART_RX_BUF[USART_REC_LEN];     

【注】:在STM32例程中,定义  u8 USART_RX_BUF[USART_REC_LEN];    把一个字节的数据放入数组中,u8是8位 unsigned int型,u8就是一个字节,一个字节8位。

参考:    bit、byte、位、字节、汉字的关系

 

 

这样,每次接收到的一字节数据都储存到数组中。我们就可以通过逻逻辑分析数组中的每个元素来解析串口收到的数据。

if(USART_RX_BUF[0]==0x5a&&USART_RX_BUF[1]==0x5a)&&USART_RX_BUF[3]==0x02&&USART_RX_BUF[4]==0x01&&USART_RX_BUF[5]==0x0a)
printf("启动机器");

这段代码解析的就是,收到启动机器的指令数据 5a 5a 02 01 0a ,就输出“启动机器”

 

二、数据接收全部是十六进制形式,串口助手XCOM选择16进制发送5a 5a 03 02 01 0a 0d 0a ,单片机有应答

当未选择16进制发送时,发送的数据是5a 5a 03 02 01 0a 0d 0a(ASCII码)对应的字符

参考:

ASCII码对照表

0x0d和0x0a 学习       回车

 

三、C语言进阶,测试串口程序的时候,需要输出收到的16进制数。     printf输出带前缀的8进制,16进制数

printf("%#x",num)  //有前缀0x的小写16进制数

 

展开阅读全文

没有更多推荐了,返回首页