/** * Main function. */ int main(void){ halInit(); chSysInit(); chThdCreateStatic(blinkWA, sizeof(blinkWA), NORMALPRIO, blink_thd, NULL); #if !WAKEUP_TEST /* switch off wakeup */ rtcSetPeriodicWakeup_v2(&RTCD1, NULL); /* Shell initialization.*/ sdStart(&SD2, &ser_cfg); shellInit(); static WORKING_AREA(waShell, 1024); shellCreateStatic(&shell_cfg1, waShell, sizeof(waShell), NORMALPRIO); /* wait until user do not want to test wakeup */ while (TRUE){ chThdSleepMilliseconds(200); } #else /* set wakeup */ wakeupspec.wakeup = ((uint32_t)4) << 16; /* select 1 Hz clock source */ wakeupspec.wakeup |= 9; /* set counter value to 9. Period will be 9+1 seconds. */ rtcSetPeriodicWakeup_v2(&RTCD1, &wakeupspec); chThdSleepSeconds(3); func_sleep(); #endif /* !WAKEUP_TEST */ return 0; }
static void cmd_sleep(BaseSequentialStream *chp, int argc, char *argv[]){ (void)argv; if (argc > 0) { chprintf(chp, "Usage: sleep\r\n"); return; } chprintf(chp, "Going to sleep.\r\n"); chThdSleepMilliseconds(200); /* going to anabiosis */ func_sleep(); }