Josh Chen
/
Nucleo_sleep
new one sleep / deepsleep and timer wakeup sample code
Diff: main.cpp
- Revision:
- 0:53ff53c686e1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Nov 27 03:12:02 2014 +0000 @@ -0,0 +1,59 @@ +#include "mbed.h" +#include "WakeUp.h" + +InterruptIn event(USER_BUTTON); +DigitalOut myled(LED1); + +int go_to_sleep = 0; + +void pressed() +{ + printf("Button pressed\n"); + go_to_sleep = !go_to_sleep; +} + +void gotoSleep(int seconds) +{ + //Set wakeup time for seconds + int s=seconds*1000; + WakeUp::set_ms(s); + + printf("==> Entering deepsleep until %d seconds\n", seconds); + //Enter deepsleep, the program won't go beyond this point until it is woken up + deepsleep(); + wait(0.1); +} + +void sleepUtilPressed() +{ + printf("==> Entering deepsleep (press user button to resume)\n"); + //sleep(); + deepsleep(); + wait(0.1); +} + +int main() +{ + int i = 0; + + wait(5); + //The low-power oscillator can be quite inaccurate on some targets + //this function calibrates it against the main clock + WakeUp::calibrate(); + + event.fall(&pressed); + + while (1) { + if (go_to_sleep) { + myled = 0; + gotoSleep(2); + //sleepUtilPressed(); + go_to_sleep=0; + } else { + printf("%d: Running\n", i); + myled = !myled; + wait(1.0); + } + i++; + } +}