⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_.c

📁 使用CYAN单片机的ECOG1开发板连接SIM300C的GSM模块开发的短信收发程序.供UART和AT指令编程者参考
💻 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 + -