Demo of working sleep and deepsleep commands. mbed's version currently does not
Dependencies: mbed
Fork of DipCortex-SleepyTime by
main.cpp@1:03baf535e2fc, 2013-11-14 (annotated)
- Committer:
- SolderSplashLabs
- Date:
- Thu Nov 14 22:38:45 2013 +0000
- Revision:
- 1:03baf535e2fc
- Parent:
- 0:d616150fefca
Removed ticker
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SolderSplashLabs | 0:d616150fefca | 1 | #include "mbed.h" |
SolderSplashLabs | 0:d616150fefca | 2 | |
SolderSplashLabs | 0:d616150fefca | 3 | DigitalIn Button(P0_1); |
SolderSplashLabs | 0:d616150fefca | 4 | InterruptIn ButtonIrq(P0_1); |
SolderSplashLabs | 0:d616150fefca | 5 | |
SolderSplashLabs | 0:d616150fefca | 6 | DigitalOut Led2(P1_22); |
SolderSplashLabs | 0:d616150fefca | 7 | |
SolderSplashLabs | 0:d616150fefca | 8 | void sleep_normal ( void ) |
SolderSplashLabs | 0:d616150fefca | 9 | { |
SolderSplashLabs | 0:d616150fefca | 10 | // PCON[PD] set to sleep |
SolderSplashLabs | 0:d616150fefca | 11 | LPC_PMU->PCON = 0x0; |
SolderSplashLabs | 0:d616150fefca | 12 | |
SolderSplashLabs | 0:d616150fefca | 13 | // SRC[SLEEPDEEP] set to 0 = sleep |
SolderSplashLabs | 0:d616150fefca | 14 | SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk; |
SolderSplashLabs | 0:d616150fefca | 15 | |
SolderSplashLabs | 0:d616150fefca | 16 | // wait for interrupt |
SolderSplashLabs | 0:d616150fefca | 17 | __WFI(); |
SolderSplashLabs | 0:d616150fefca | 18 | } |
SolderSplashLabs | 0:d616150fefca | 19 | |
SolderSplashLabs | 0:d616150fefca | 20 | // Section 3.9.4 of the LPC11U24 User Manual |
SolderSplashLabs | 0:d616150fefca | 21 | void sleep_deep ( void ) |
SolderSplashLabs | 0:d616150fefca | 22 | { |
SolderSplashLabs | 0:d616150fefca | 23 | // PCON[PD] set to deepsleep |
SolderSplashLabs | 0:d616150fefca | 24 | LPC_PMU->PCON = 0x1; |
SolderSplashLabs | 0:d616150fefca | 25 | |
SolderSplashLabs | 0:d616150fefca | 26 | // SRC[SLEEPDEEP] set to 1 = deep sleep |
SolderSplashLabs | 0:d616150fefca | 27 | SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; |
SolderSplashLabs | 0:d616150fefca | 28 | |
SolderSplashLabs | 0:d616150fefca | 29 | // Power up everything after powerdown |
SolderSplashLabs | 0:d616150fefca | 30 | LPC_SYSCON->PDAWAKECFG &= 0xFFFFF800; |
SolderSplashLabs | 0:d616150fefca | 31 | |
SolderSplashLabs | 0:d616150fefca | 32 | // wait for interrupt |
SolderSplashLabs | 0:d616150fefca | 33 | __WFI(); |
SolderSplashLabs | 0:d616150fefca | 34 | } |
SolderSplashLabs | 0:d616150fefca | 35 | |
SolderSplashLabs | 0:d616150fefca | 36 | void ButtonPressed ( void ) |
SolderSplashLabs | 0:d616150fefca | 37 | { |
SolderSplashLabs | 0:d616150fefca | 38 | // Wake up .. |
SolderSplashLabs | 0:d616150fefca | 39 | Led2 = !Led2; |
SolderSplashLabs | 0:d616150fefca | 40 | } |
SolderSplashLabs | 0:d616150fefca | 41 | |
SolderSplashLabs | 0:d616150fefca | 42 | int main() |
SolderSplashLabs | 0:d616150fefca | 43 | { |
SolderSplashLabs | 0:d616150fefca | 44 | Led2 = 1; |
SolderSplashLabs | 0:d616150fefca | 45 | Button.mode(PullUp); |
SolderSplashLabs | 0:d616150fefca | 46 | ButtonIrq.fall(ButtonPressed); |
SolderSplashLabs | 0:d616150fefca | 47 | |
SolderSplashLabs | 0:d616150fefca | 48 | while(1) |
SolderSplashLabs | 0:d616150fefca | 49 | { |
SolderSplashLabs | 0:d616150fefca | 50 | // All I do is sleep |
SolderSplashLabs | 0:d616150fefca | 51 | //sleep_normal(); |
SolderSplashLabs | 0:d616150fefca | 52 | sleep_deep(); |
SolderSplashLabs | 0:d616150fefca | 53 | } |
SolderSplashLabs | 0:d616150fefca | 54 | } |