![6dd00aa791f70d9612c08fc8dae97175.png](https://i-blog.csdnimg.cn/blog_migrate/7ee0f5bda5053595b06e1b989ff324d4.jpeg)
C语言的结构体和共用体,往往在单片机应用开发中被忽视。如果能够用起来,不仅能够极大的提高单片机的运行效率,还可能解决一些看起来无法解决的问题。
现在,给大家举一个例子:单片机串口需要接收并处理大量数据的情况。
示例:单片机甲要与某个设备乙通信,它们采用串口连接,设备乙会给单片机甲发送串口数据,数据一共有46个字节,其中前8个字节表示命令,后8个字节表示设备信息,中间30个字节表示有效数据。
普通的程序代码,会进行如下变量定义:
unsigned char rec_buf[46]; // 定义接收缓存unsigned char command[8]; // 定义命令变量unsigned char valid_data[30]; // 定义有效数据变量unsigned char device_info[8]; // 定义器件信息变量
在串口中断函数中,使用rec_buf接收串口数据。此处省略接收代码,自行脑补。
接收完毕后,再使用如下代码把对应的变量取出来。
//取出命令for(i=0;i<8;i++){ command[i]=rec_buf[i];}//取出有效数据for(i=8;i<38;i++){ val