📄 main_.c
字号:
/******************************************************************************
Reading ACC and COM data for algorithm.
******************************************************************************/
void ACC_COM_reading(void)
{
if(ACC_RECEIVE_DONE_FLAG)
{
rg.io.gp0_3_out = IO_GP0_3_OUT_CLR1_MASK | IO_GP0_3_OUT_SET1_MASK;//debug
accelerator_3axis_reading();
ACC_delay_buf[ACC_delay_write_pointer].x =
ACC_data_HEX_to_FLOAT(x_axis_data_buf);
ACC_delay_buf[ACC_delay_write_pointer].y =
ACC_data_HEX_to_FLOAT(y_axis_data_buf);
ACC_delay_buf[ACC_delay_write_pointer].z =
ACC_data_HEX_to_FLOAT(z_axis_data_buf);
ACC_delay_write_pointer++;
if(ACC_delay_write_pointer >= 5)
{
ACC_delay_write_pointer = 0;
}
ACC_RECEIVE_DONE_FLAG = 0;
Get_ACC_average();
if(COM_timer_count == 0)
{
COM_delay_buf[0] = COM_delay_buf[1];
COM_delay_buf[1] = com_heading;
Get_COM_average();
}
ACC_data_buf = ACC_average_buf;
Acc_data_route (
&ACC_data_buf,
&COM_radian_buf[COM_timer_count]
);
distance_integral_formula();
}
}
void ACC_COM_insert_reading(void)
{
if(ACC_RECEIVE_DONE_FLAG)
{
rg.io.gp0_3_out = IO_GP0_3_OUT_CLR1_MASK | IO_GP0_3_OUT_SET1_MASK;//debug
accelerator_3axis_reading();
ACC_delay_buf[ACC_delay_write_pointer].x =
ACC_data_HEX_to_FLOAT(x_axis_data_buf);
ACC_delay_buf[ACC_delay_write_pointer].y =
ACC_data_HEX_to_FLOAT(y_axis_data_buf);
ACC_delay_buf[ACC_delay_write_pointer].z =
ACC_data_HEX_to_FLOAT(z_axis_data_buf);
ACC_delay_write_pointer++;
if(ACC_delay_write_pointer >= 5)
{
ACC_delay_write_pointer = 0;
}
ACC_RECEIVE_DONE_FLAG = 0;
Get_ACC_average();
if(COM_timer_count == 0)
{
COM_delay_buf[0] = COM_delay_buf[1];
COM_delay_buf[1] = com_heading;
Get_COM_average();
}
ACC_data_buf = ACC_average_buf;
Acc_data_route (
&ACC_data_buf,
&COM_radian_buf[COM_timer_count]
);
insert_save[insert_save_pointer].Acc_save = ACC_data_buf;
insert_save[insert_save_pointer].sin_Com_save = sin_com_hd;
insert_save[insert_save_pointer].cos_Com_save = cos_com_hd;
insert_save[insert_save_pointer].move_flag_save = (MOVE_flag ? 1 : 0);
insert_save_pointer++;
if(insert_save_pointer > (SAVE_SUM - 1)) insert_save_pointer = 0;
}
}
/******************************************************************************
Reading gps data and algorithm.
******************************************************************************/
void GPS_reading(void)
{
unsigned int n;
if(GPS_RECEIVE_DONE_FLAG == 1)
{
insert_save_pointer = 0;
gps_state = GPGSA.position_MSG[0];
X_distance_accumulator = Sn.x;
Y_distance_accumulator = Sn.y;
if(gps_state > '0') //debug '1'
{
GPS_data_STR_to_RADIAN(&GPRMC.latitude[0],&GPRMC.longitude[0]);
//GPS_data_STR_to_RADIAN("2254.16417","11404.69754");
ACC_COM_insert_reading();
GPS_data_change(&gps_i, &gps_o);
ACC_COM_insert_reading();
}
else
{
gps_o.x = X_distance_accumulator; //debug
gps_o.y = Y_distance_accumulator;
}
for(n = 0;n < (BUF_LENGTH - 1);n++)
{
ACC_COM_insert_reading();
GS[n] = GS[n + 1];
AS[n].x = AS[n + 1].x; //double???
AS[n].y = AS[n + 1].y;
//AS[n].z = AS[n + 1].z;
AV[n] = AV[n + 1];
}
AS[BUF_LENGTH - 1].x = X_distance_accumulator; //double???
AS[BUF_LENGTH - 1].y = Y_distance_accumulator;
AV[BUF_LENGTH - 1] = Vn;
GS[BUF_LENGTH - 1].x = gps_o.x;
GS[BUF_LENGTH - 1].y = gps_o.y;
ACC_COM_insert_reading();
//AV_AS_endow();//----------
LSE_get_earth_distance(); //debug
_fcvt_(&xy01[0],GS[19].x); //debug
_fcvt_(&xy02[0],GS[19].y); //debug
_fcvt_(&xy03[0],AS[19].x); //debug
_fcvt_(&xy04[0],AS[19].y); //debug
while(1)
{
if(ACC_RECEIVE_DONE_FLAG) break;
}
ACC_COM_insert_reading();
for(n = 0;n < insert_save_pointer;n++)
{
ACC_data_buf = insert_save[n].Acc_save;
sin_com_hd = insert_save[n].sin_Com_save;
cos_com_hd = insert_save[n].cos_Com_save;
MOVE_flag = (insert_save[n].move_flag_save ? 1 : 0);
distance_integral_formula();
}
GPS_RECEIVE_DONE_FLAG = 0;
GPS_TX_count = 0;
_GSV_TX_sum_ = _GSV_sum_[0];
GPS_TX_gradation_flag = 1;
GPS_TX_ready_flag = 1;
xy_TX_ready_flag = 1;
xy_TX_gradation_flag = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -