Basic example showing how to use the sleep/deepsleep modes on the DISCO_L476VG board.
Dependencies: BSP_DISCO_L476VG LCD_DISCO_L476VG mbed
main.cpp
- Committer:
- jeromecoutant
- Date:
- 2017-07-06
- Revision:
- 2:3201a7da544e
- Parent:
- 0:e99d70686026
File content as of revision 2:3201a7da544e:
#include "mbed.h" #include "LCD_DISCO_L476VG.h" LCD_DISCO_L476VG lcd; DigitalOut led_green(LED1); DigitalOut led_red(LED2); InterruptIn joy_down(JOYSTICK_DOWN); InterruptIn joy_up(JOYSTICK_UP); InterruptIn joy_center(JOYSTICK_CENTER); #define MODE_WAKEUP 0 // IDD=19mA #define MODE_SLEEP 1 // IDD=10mA #define MODE_DEEP_SLEEP 2 // IDD= 1mA static int deepsleep_mode = MODE_WAKEUP; // Used to enter in wake up mode void wakeup_tasks() { led_green = 1; led_red = 1; lcd.Clear(); printf("WAKEUP\n"); lcd.DisplayString((uint8_t *)"WAKEUP"); deepsleep_mode = MODE_WAKEUP; } // Used to enter in deepsleep mode void joy_down_pressed() { deepsleep_mode = MODE_DEEP_SLEEP; } // Used to enter in sleep mode void joy_up_pressed() { deepsleep_mode = MODE_SLEEP; } int main() { led_green = 1; led_red = 1; lcd.Clear(); printf("HELLO\n"); lcd.DisplayString((uint8_t *)"HELLO"); // Configure the buttons joy_down.rise(&joy_down_pressed); joy_down.mode(PullDown); joy_up.rise(&joy_up_pressed); joy_up.mode(PullDown); joy_center.rise(&wakeup_tasks); joy_center.mode(PullDown); while(1) { if (deepsleep_mode == MODE_SLEEP) { lcd.Clear(); printf("SLEEP\n"); lcd.DisplayString((uint8_t *)"SLEEP"); led_red = 0; wait(1); sleep(); wakeup_tasks(); } if (deepsleep_mode == MODE_DEEP_SLEEP) { lcd.Clear(); printf("DEEP_SLEEP\n"); lcd.DisplayString((uint8_t *)"DEEP"); led_green = 0; wait(.1); deepsleep(); wakeup_tasks(); } } }