72 lines
1.5 KiB
C
72 lines
1.5 KiB
C
|
|
||
|
|
||
|
#include "arr_tool.h"
|
||
|
|
||
|
|
||
|
//void arr_move_front(uint16_t arr[],uint32_t length)
|
||
|
//{
|
||
|
//
|
||
|
// uint16_t temp = arr[0],i;
|
||
|
// for (i = 0; i < length; i++)
|
||
|
// {
|
||
|
// arr[i] = arr[i + 1];
|
||
|
// }
|
||
|
// arr[length-1]=temp;
|
||
|
//}
|
||
|
|
||
|
uint16_t find_max_val_position(uint16_t* max_val,uint16_t* arr,uint16_t len)
|
||
|
{
|
||
|
uint16_t i;
|
||
|
uint16_t max_p=0;
|
||
|
*max_val = 0;
|
||
|
for (i = 0 ; i<len ; i++)
|
||
|
{
|
||
|
if(arr[i] > *max_val)
|
||
|
{
|
||
|
*max_val = arr[i];
|
||
|
max_p = i;
|
||
|
}
|
||
|
}
|
||
|
return max_p;
|
||
|
}
|
||
|
|
||
|
uint16_t find_echo_position(uint16_t max_val,uint16_t max_val_position,uint16_t* arr,uint16_t len)
|
||
|
{
|
||
|
uint16_t i=0;
|
||
|
uint32_t max_val_zero;
|
||
|
max_val_zero = max_val - 2048 ;
|
||
|
//uint16_t echo_position = 0;
|
||
|
// 最大值的0.1倍
|
||
|
uint16_t max_val_zero_0R1 = (max_val_zero*8/100)+2048;
|
||
|
// 最大值的0.3倍
|
||
|
uint16_t max_val_zero_0R3 = (max_val_zero*40/100)+2048;
|
||
|
|
||
|
if(max_val_position>200)
|
||
|
{
|
||
|
i = max_val_position-200;
|
||
|
}else
|
||
|
{
|
||
|
i = 0;
|
||
|
}
|
||
|
|
||
|
for(; i < max_val_position;i++)
|
||
|
{
|
||
|
// 判断是否是顶点
|
||
|
//if( arr[i-2]<arr[i-1] && arr[i-1] <= arr[i] && arr[i]>=arr[i+1] && arr[i+1]>arr[i+2])
|
||
|
//
|
||
|
if( arr[i-1] < arr[i] && arr[i]> arr[i+1])
|
||
|
{
|
||
|
// 减去偏置电压
|
||
|
//temp_val_zero = arr[i]-2048;
|
||
|
// 判断顶点是否在 10%-%30之间。
|
||
|
if(arr[i] >= max_val_zero_0R1 && arr[i] <= max_val_zero_0R3 )
|
||
|
{
|
||
|
// 如果找到 函数推出
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
// 如果没有找到 返回0;
|
||
|
return 0;
|
||
|
}
|