/* * Application entry point. */ int main(void) { /* * System initializations. * - HAL initialization, this also initializes the configured device drivers * and performs the board-specific initializations. * - Kernel initialization, the main() function becomes a thread and the * RTOS is active. */ halInit(); chSysInit(); /* * Activates the serial driver 2 using the driver default configuration. * PA2(TX) and PA3(RX) are routed to USART2. */ sdStart(&SD2, NULL); palSetPadMode(GPIOD, 5, PAL_MODE_ALTERNATE(7)); palSetPadMode(GPIOD, 6, PAL_MODE_ALTERNATE(7)); setup_IMU(); setup_ExternalInterrupt(); setup_Fernsteuerung(); setup_Motoren(); setup_Regelung(); setup_Datalogger(); /* * Normal main() thread activity, in this demo it does nothing except * sleeping in a loop and check the button state, when the button is * pressed the test procedure is launched with output on the serial * driver 2. */ while (TRUE) { update_IMU(); //datalog(); //chThdSleepMilliseconds(10); } }
/* * Application entry point. */ int main(void) { float nick, roll, yaw; static const evhandler_t evhndl[] = {InsertHandler, RemoveHandler}; struct EventListener el0, el1; FRESULT err; /* * System initializations. * - HAL initialization, this also initializes the configured device drivers * and performs the board-specific initializations. * - Kernel initialization, the main() function becomes a thread and the * RTOS is active. */ halInit(); chSysInit(); /* * Activates the serial driver 2 using the driver default configuration. * PA2(TX) and PA3(RX) are routed to USART2. */ sdStart(&SD2, NULL); palSetPadMode(GPIOD, 5, PAL_MODE_ALTERNATE(7)); palSetPadMode(GPIOD, 6, PAL_MODE_ALTERNATE(7)); setup_IMU(); setup_Fernsteuerung(); setup_Motoren(); setup_Regelung(); // initialize MMC driver // setup pads to SPI1 function (connect these pads to your SD card accordingly) palSetPadMode(GPIOC, 4, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); // NSS palSetPadMode(GPIOA, 5, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); // SCK palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(5)); // MISO palSetPadMode(GPIOA, 7, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); // MOSI palSetPad(GPIOC, 4); // set NSS high // initialize MMC driver mmcObjectInit(&MMCD1, &SPID1, &ls_spicfg, &hs_spicfg, mmc_is_protected, mmc_is_inserted); mmcStart(&MMCD1, NULL); chEvtRegister(&MMCD1.inserted_event, &el0, 0); chEvtRegister(&MMCD1.removed_event, &el1, 1); chThdSleepMilliseconds(7000); if(mmcConnect(&MMCD1)) { chprintf((BaseChannel *) &SD2, "SD: Failed to connect to card\r\n"); return; } else { chprintf((BaseChannel *) &SD2, "SD: Connected to card\r\n"); } err = f_mount(0, &MMC_FS); if(err != FR_OK) { chprintf((BaseChannel *) &SD2, "SD: f_mount() failed %d\r\n", err); mmcDisconnect(&MMCD1); return; } else { chprintf((BaseChannel *) &SD2, "SD: File system mounted\r\n"); } fs_ready = TRUE; rc = f_open(&Fil, "Quad.TXT", FA_WRITE | FA_CREATE_ALWAYS); /* * Normal main() thread activity, in this demo it does nothing except * sleeping in a loop and check the button state, when the button is * pressed the test procedure is launched with output on the serial * driver 2. */ while (TRUE) { update_IMU(); //Ersetzen durch Interrupt Handler!!!!!! nick = getEuler_nick(); roll = getEuler_roll(); yaw = getEuler_yaw(); f_printf(&Fil, "%d;%d;%d\r\n",(int)(nick*100),(int)(roll*100),(int)(yaw*100)); rc = f_sync(&Fil); chThdSleepMilliseconds(10); } }