Josh Chen
/
Nucleo_sleep
new one sleep / deepsleep and timer wakeup sample code
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Sat Jul 30 2022 12:58:24 by 1.7.2