new one sleep / deepsleep and timer wakeup sample code

Dependencies:   WakeUp mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "WakeUp.h"
00003 
00004 InterruptIn event(USER_BUTTON);
00005 DigitalOut myled(LED1);
00006 
00007 int go_to_sleep = 0;
00008  
00009 void pressed()
00010 {
00011     printf("Button pressed\n");
00012     go_to_sleep = !go_to_sleep;
00013 }
00014 
00015 void gotoSleep(int seconds)
00016 {
00017     //Set wakeup time for seconds
00018     int s=seconds*1000;
00019     WakeUp::set_ms(s);
00020     
00021     printf("==> Entering deepsleep until %d seconds\n", seconds);
00022     //Enter deepsleep, the program won't go beyond this point until it is woken up
00023     deepsleep();
00024     wait(0.1);
00025 }
00026 
00027 void sleepUtilPressed()
00028 {
00029     printf("==> Entering deepsleep (press user button to resume)\n");
00030     //sleep();
00031     deepsleep();
00032     wait(0.1);
00033 }
00034  
00035 int main()
00036 {
00037     int i = 0;
00038     
00039     wait(5);
00040     //The low-power oscillator can be quite inaccurate on some targets
00041     //this function calibrates it against the main clock
00042     WakeUp::calibrate();
00043     
00044     event.fall(&pressed);
00045  
00046     while (1) {
00047         if (go_to_sleep) {
00048             myled = 0;
00049             gotoSleep(2);
00050             //sleepUtilPressed();
00051             go_to_sleep=0;
00052         } else {
00053             printf("%d: Running\n", i);
00054             myled = !myled;
00055             wait(1.0);
00056         }
00057         i++;
00058     }
00059 }