#ifndef __FILTER_H #define __FILTER_H #include "stm32f1xx_hal.h" #include "math.h" extern uint16_t MovingAverageFilter(uint16_t InputData, uint16_t* Array, uint16_t Length); extern uint16_t GetAverageData(uint16_t* Input, uint16_t Length); extern uint16_t Function_Linear_3Stage(uint16_t Th1, int16_t K1, uint16_t Th2, int16_t K2, uint16_t InputData); extern uint16_t Coefficient_GainCal(uint16_t Min, uint16_t Max, uint16_t Th, uint16_t InputData); extern uint16_t TriangleWaveGenerate(uint32_t Time_Zero, uint16_t Time1, uint16_t Time2, uint16_t PeakValue); extern uint16_t SquareWaveGenerate(uint32_t Time_Zero, uint16_t Time1, uint16_t Time2, uint16_t PeakValue); extern uint16_t RampWaveGenerate(uint32_t Time_Zero, uint16_t Time1, uint16_t PeakValue); extern uint16_t GetMaxData(uint16_t* Array, uint16_t Length); extern uint16_t GetMinData(uint16_t* Array, uint16_t Length); extern void GetMaxMinAvgData(uint16_t* Array, uint16_t Length, uint16_t* Max, uint16_t* Min, uint16_t* Avg); extern uint32_t GetStandardDeviation(uint16_t* Input, uint16_t Length); extern TrueOrFalse_Flag_Struct_t CheckIsHasDouble(uint8_t* Array, uint16_t Length); extern uint32_t StepCalc(int16_t V_max, \ int16_t V_Tc, \ int16_t V_AccDecT); extern int16_t accDecProcess(int16_t V_Set, \ uint32_t V_AccStep, \ uint32_t V_DecStep, \ int32_t* V_SetMiddle); extern uint16_t Standard_deviation_aver(uint16_t *data,uint8_t len, uint16_t *pAver); extern uint8_t CheckArrayIs0(uint8_t* Data, uint16_t Len); extern void ArrayFillZero(uint16_t* Array, uint16_t Length); extern uint16_t MovingMaxFilter(uint16_t InputData, uint16_t* Array, uint16_t Length); #endif