一、每接受完一个字节的数据,进入一次中断。
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进制数