STM32F103ZET6 标准库 帮我写 判断6个数据是否与之前6个数据相同,不相同则将6个数分别付给一个二维数组
时间: 2024-02-28 10:57:21 浏览: 60
STM32F103ZET6最小系统AD原理图及封装库
5星 · 资源好评率100%
好的,下面是代码示例:
```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` 来存储上一次的数据,但是我们不再直接更新这个数组,而是先判断当前数据是否与上一次相同,如果不同再更新 `last_data` 数组。这样可以避免在数据相同的情况下多余的赋值操作。
阅读全文