STM32 标准库 将结构中6个不同的数据与之后更新的这六个数据进行对比,如果不同则标志位+1 并保存之前的数据在结构体数组中
时间: 2024-03-01 12:53:33 浏览: 62
STM32的标准库函数
5星 · 资源好评率100%
可以通过以下代码实现:
```c
typedef struct {
uint16_t data1;
uint16_t data2;
uint16_t data3;
uint16_t data4;
uint16_t data5;
uint16_t data6;
uint8_t flag;
} MyStruct;
MyStruct myStructArray[10]; // 定义结构体数组
void checkAndUpdate(MyStruct *myStruct) {
static uint16_t prevData1, prevData2, prevData3, prevData4, prevData5, prevData6;
if (myStruct->data1 != prevData1 || myStruct->data2 != prevData2 ||
myStruct->data3 != prevData3 || myStruct->data4 != prevData4 ||
myStruct->data5 != prevData5 || myStruct->data6 != prevData6) {
myStruct->flag++;
myStructArray[myStruct->flag] = *myStruct; // 保存之前的数据到结构体数组中
prevData1 = myStruct->data1;
prevData2 = myStruct->data2;
prevData3 = myStruct->data3;
prevData4 = myStruct->data4;
prevData5 = myStruct->data5;
prevData6 = myStruct->data6;
}
}
```
在主函数中,可以调用 `checkAndUpdate()` 函数来检查结构体数据是否有更新,并保存之前的数据到结构体数组中。
阅读全文