这里写自定义目录标题
- qsort函数
- 新的改变
qsort函数
qsort函数是C语言标准库中的一个排序函数,定义在头文件stdlib.h中。 qsort函数可以对任意类型的数组进行排序,其通用性和灵活性使其成为C语言中常用的排序工具。
新的改变
/**
***********************************************************
* @brief 算术平均滤波
* @param arr,数组首地址
* @param len,元素个数
* @return 平均运算结果
***********************************************************
*/
static uint16_t ArithAvgFltr(uint16_t *arr, uint32_t len)
{uint32_t sum = 0;for (uint32_t i = 0; i < len; i++){sum += arr[i];}return (uint16_t)(sum / len);
}/**
***********************************************************
* @brief qsort函数调用的回调函数,比较规则,降序排列
* @param *_a,对应数组元素
* @param *_b,对应数组元素
* @return 比较结果
***********************************************************
*/
static int32_t CmpCb(const void *_a, const void *_b)
{uint16_t *a = (uint16_t *)_a;uint16_t *b = (uint16_t *)_b;int32_t val = 0;if (*a > *b){val = -1;}else if (*a < *b){val = 1;}else{val = 0;}return val;
}/**
***********************************************************
* @brief 中位值平均滤波
* @param arr,数组首地址
* @param len,元素个数,需要大于等于3个
* @return 平均运算结果
***********************************************************
*/
static uint16_t MedianAvgFltr(uint16_t *arr, uint32_t len)
{qsort(arr, len, sizeof(uint16_t), CmpCb);return ArithAvgFltr(&arr[1], len - 2);
}static void PushDataToBuf(uint16_t adcVal)
{static uint16_t s_index = 0;g_adcVal[s_index] = adcVal; s_index++;s_index %= MAX_BUF_SIZE;
}