示例#1
0
static void vBaro(void* pvParameters) {
	static FIL f_baro_log;
	static char baro_str_buf[0x20];
	int result;
	int counter = 0;
	LPS_init(I2C0);
	LPS_enable();
	strcpy(baro_str_buf, "0:BARO.TAB");
	{
		int rename_number = 1;
		while(true) {
			if (f_stat(baro_str_buf, NULL) == FR_OK) {
				sprintf(baro_str_buf, "0:BARO%d.TAB", rename_number);
				rename_number ++;
				continue;
			}
			break;
		}
	}
	LOG_INFO("Baro output is %s", baro_str_buf);
	result = f_open(&f_baro_log, baro_str_buf, FA_WRITE | FA_CREATE_ALWAYS);

	// DEBUG
	xTaskCreate(vIMU, (signed char*) "IMU", 512, NULL, (tskIDLE_PRIORITY + 1UL), NULL);
	// ENDBEBUG
	while (true) {
		float temp, alt;
		xSemaphoreTake(mutex_i2c, portMAX_DELAY);
		temp = LPS_read_data(LPS_TEMPERATURE);
		alt = LPS_read_data(LPS_ALTITUDE);
		xSemaphoreGive(mutex_i2c);
		if (result == FR_OK) {
			sprintf(baro_str_buf, "%d\t%f\t%f\n", xTaskGetTickCount(), temp, alt);
			f_puts(baro_str_buf, &f_baro_log);
			if ((counter % 50) == 0) {
				f_sync(&f_baro_log);
			}
		}
		vTaskDelay(50);
		counter ++;
	}
}
int main(void)
{

    serial_init();
	pin_init();
	twi_init();	
	sensor_calib_first();

	value = 157;
	pwm_init();

	L3G_init(1);
	L3G_enableDefault();
	LSM303_init(1);
	LSM303_enableDefault();
	LPS_init(1);
	LPS_enableDefault();


	receiveready = 1;
	
	while(1 == 1)
	{
		if(receivecomplete == 1)
		{
			analise_command();
			receivecomplete = 0;
			receiveready = 1;
			recvcount = 0;
		}
		
		
		if(tmr_int == 1) 
		{
			control();
		}
    }
	
	return 0;
}