STM32F103ZET6 标准库 帮我写 判断6个不同的数据是否与之前6个不同的数据相同,不相同则将6个数分别付给一个二维数组
时间: 2024-02-28 11:57:25 浏览: 13
好的,下面是代码示例:
```c
#include "stm32f10x.h"
#define DATA_NUM 6 // 数据个数
#define ARRAY_ROWS 6 // 二维数组的行数
#define ARRAY_COLS 6 // 二维数组的列数
// 定义二维数组
uint16_t data_array[ARRAY_ROWS][ARRAY_COLS] = {0};
// 判断数据是否相同的函数
uint8_t is_data_same(uint16_t* data)
{
static uint16_t last_data[DATA_NUM] = {0}; // 上一次的数据
uint8_t is_same = 1; // 是否相同的标志位
for (uint8_t i = 0; i < DATA_NUM; i++)
{
if (last_data[i] == data[i])
{
is_same = 0; // 相同
}
}
if (!is_same)
{
// 不相同,更新上一次的数据
for (uint8_t i = 0; i < DATA_NUM; i++)
{
last_data[i] = data[i];
}
}
return is_same;
}
int main(void)
{
uint16_t data[DATA_NUM] = {0}; // 存放当前数据
while (1)
{
// 获取6个数据
data[0] = ?; // 填入获取数据的方法
data[1] = ?;
data[2] = ?;
data[3] = ?;
data[4] = ?;
data[5] = ?;
// 判断数据是否相同
if (!is_data_same(data))
{
// 不相同,将6个数分别赋值给二维数组
for (uint8_t i = 0; i < DATA_NUM; i++)
{
data_array[i][0] = data[i];
}
}
}
}
```
这段代码与前面两个问题的代码也很类似,只是修改了判断数据是否相同的函数 `is_data_same`。在这个函数中,我们仍然使用一个静态数组 `last_data` 来存储上一次的数据,但是我们将判断数据是否相同的条件改为了当前数据与上一次数据不同。这样就可以保证只有当6个数据都不同的时候才会更新数据。