#include "key.h" #include "lcd.h" #include "tim.h" #include "ads1220.h" #include "linear.h" int key_flag = 0; int ct_type = 0; int mid_point = 0; void key_scan() { if(!KEY2) { __HAL_TIM_SetCounter(&htim1,10000); //编码器初始值10000 point_cnt = 0; key_flag = KEY2_DOWN; LCD_ShowString(10,0,"testing",RED,WHITE,32,0); } if(!KEY3) { key_flag = KEY3_DOWN; LCD_ShowString(10,0,"ready ",RED,WHITE,32,0); //确认磁条型号 if(abs(maxv_loca - minv_loca) < 500) ct_type = 1;//#25磁条 else if(abs(maxv_loca - minv_loca) < 1100) ct_type = 2;//#50磁条 else if(abs(maxv_loca - minv_loca) < 2100) ct_type = 3;//#110磁条 else ct_type = 4;//#210磁条 //确认有用数据范围 int mid_point_v = 9999; for(int i = 0;i < point_data.cnt;i++) { if(abs(point_data.vol[i]) <= mid_point_v) { mid_point_v = abs(point_data.vol[i]); mid_point = i; } } int start_l = 0,end_l = 0; if(ct_type == 1) { start_l = point_data.loca[mid_point] - 354; end_l = point_data.loca[mid_point] + 354; } else if(ct_type == 2) { start_l = point_data.loca[mid_point] - 708; end_l = point_data.loca[mid_point] + 708; } else if(ct_type == 3) { start_l = point_data.loca[mid_point] - 1559; end_l = point_data.loca[mid_point] + 1559; } else if(ct_type == 4) { start_l = point_data.loca[mid_point] - 2976; end_l = point_data.loca[mid_point] + 2976; } //提取有用数据范围 for(int i = 0;i < point_data.cnt;i++) { if(point_data.loca[i] >= start_l && point_data.loca[i] <= end_l) { point_v[point_cnt] = point_data.vol[i]; point_l[point_cnt] = point_data.loca[i]; point_cnt++; } } //得到线性度 get_linearity(); } }