keil c251编译报错,下面是代码
h文件
#ifndef _USER_FUNCTION_H_
#define _USER_FUNCTION_H_
#include "zf_common_typedef.h"
extern int32 func_limit_ab(int32 value, int32 min, int32 max);
extern uint8 find_extreme_value(uint8 *array, uint16 start, uint16 end, uint8 mode);
extern uint8 find_jump_point(uint8 *array_value, uint8 num0, uint8 num1, uint8 jump_num, uint8 model);
#endif
c文件
#include "zf_common_typedef.h"
#include "search_line.h"
#include "user_function.h"
static uint8 func_abs(int diff)
{
return (uint8)((diff >= 0) ? diff : -diff);
}
// 限制函数
int32 func_limit_ab(int32 value, int32 min, int32 max)
{
if (value < min) return min;
if (value > max) return max;
return value;
}
// 查找极值函数
uint8 find_extreme_value(uint8 *array, uint16 start, uint16 end, uint8 mode)
{
uint8 result = array[start];
uint8 i;
if (mode == 0) // 最小值
{
for (i = start + 1; i <= end; i++)
if (array[i] < result) result = array[i];
}
else // 最大值
{
for (i = start + 1; i <= end; i++)
if (array[i] > result) result = array[i];
}
return result;
}
// 遍历数组跳变点 model 0 反向遍历 model 1 正向遍历
uint8 find_jump_point(uint8 *array_value, uint8 num0, uint8 num1, uint8 jump_num, uint8 model)
{
uint8 temp_jump_point = 0;
uint8 temp_data;
uint8 i;
if (model)
{
temp_jump_point = num0;
for (i = 0; i < (num0 - num1); i ++)
{
temp_data = func_abs(array_value[num0 - i] - array_value[num0 - i - 1]);
if (temp_data > jump_num)
{
temp_jump_point = (uint8)(num0 - i);
break;
}
}
}
else
{
temp_jump_point = num1;
for (i = 0; i < (num0 - num1); i ++)
{
temp_data = func_abs(array_value[num1 + i] - array_value[num1 + i + 1]);
if (temp_data > jump_num)
{
temp_jump_point = (uint8)(num1 + i);
break;
}
}
}
return temp_jump_point;
}
