#include "app_soft.h" #include "app_scan.h" #include "bsp_flash.h" #include "string.h" #pragma pack (1) typedef struct { uint8_t ax; uint8_t ay; uint16_t compensation_rate; }sort_value_struct; #pragma pack () uint8_t scan_X_line[] = {0,1,2,3,4,5,6,7,8,9,10,11}; uint8_t scan_Y_line[] = {0,1,2,3,4,5,6,7,8,9,10,11}; rank_frame_struct ranks; //采用双路adc, int read_rank_flash(rank_frame_struct *params){ uint32_t *head = (uint32_t*)RANKS_ADDRESS; uint32_t *tail = (uint32_t*)(RANKS_ADDRESS + sizeof(rank_frame_struct) - 4); if(*head == RANKS_HEAD && *tail == RANKS_TAIL) { memcpy((uint32_t *)params, head, sizeof(rank_frame_struct)); return 1; } else { return -1; } } int line_init(void){ if(read_rank_flash(&ranks) == 1){ // memcpy(scan_X_line, ranks.x_rank, sizeof(scan_X_line)); // memcpy(scan_Y_line, ranks.y_rank, sizeof(scan_Y_line)); return 1; } return 0; // 初始化成功 } int save_config_ranks(uint8_t x[12],uint8_t y[12]) { ranks.head = RANKS_HEAD; ranks.tail = RANKS_TAIL; memcpy(ranks.x_rank, x, sizeof(scan_X_line)); memcpy(ranks.y_rank, y, sizeof(scan_Y_line)); flash_write(RANKS_ADDRESS,(uint16_t *)&ranks, sizeof(rank_frame_struct)/sizeof(uint16_t)); line_init(); return 0; } void soft_sensor(adc_value_frame_struct *adc_raw_value) { for(uint8_t ax = 0; ax < AX_NUM; ax++){ for(uint8_t ay = 0; ay < AY_NUM; ay++) { // adc_raw_value->sensor_soft_value[ay][ax] = adc_raw_value->sensor_voltage[scan_Y_line[ay]][scan_X_line[ax]]; } } }