CaryCoders
/
demo_FRDM_RTC
first pass at demo rtc code for the kl25z
Fork of FRDM_RTC by
main.cpp@0:92bedc4e1536, 2013-08-25 (annotated)
- Committer:
- clemente
- Date:
- Sun Aug 25 22:14:04 2013 +0000
- Revision:
- 0:92bedc4e1536
- Child:
- 1:48b423c65bcb
First release.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clemente | 0:92bedc4e1536 | 1 | #include "mbed.h" |
clemente | 0:92bedc4e1536 | 2 | #include "KL25Z_RTC.h" |
clemente | 0:92bedc4e1536 | 3 | |
clemente | 0:92bedc4e1536 | 4 | |
clemente | 0:92bedc4e1536 | 5 | DigitalOut myled(LED1); |
clemente | 0:92bedc4e1536 | 6 | Serial pc(USBTX, USBRX); |
clemente | 0:92bedc4e1536 | 7 | |
clemente | 0:92bedc4e1536 | 8 | // Init the RTC module with an alarm value of 15 sec. |
clemente | 0:92bedc4e1536 | 9 | KL25Z_RTC rtc( 15); |
clemente | 0:92bedc4e1536 | 10 | |
clemente | 0:92bedc4e1536 | 11 | // Callback user function |
clemente | 0:92bedc4e1536 | 12 | void alm ( void); |
clemente | 0:92bedc4e1536 | 13 | void sec ( void); |
clemente | 0:92bedc4e1536 | 14 | |
clemente | 0:92bedc4e1536 | 15 | // Function to put in sleep or deepsleep the ARM Core. |
clemente | 0:92bedc4e1536 | 16 | #define SCB_SCR_SLEEPDEEP_MASK 0x4u |
clemente | 0:92bedc4e1536 | 17 | void sleep( void); |
clemente | 0:92bedc4e1536 | 18 | void deepsleep (void); |
clemente | 0:92bedc4e1536 | 19 | |
clemente | 0:92bedc4e1536 | 20 | unsigned int count; |
clemente | 0:92bedc4e1536 | 21 | |
clemente | 0:92bedc4e1536 | 22 | int main() { |
clemente | 0:92bedc4e1536 | 23 | |
clemente | 0:92bedc4e1536 | 24 | pc.baud( 230400); |
clemente | 0:92bedc4e1536 | 25 | pc.printf("RTC Management.\r\n"); |
clemente | 0:92bedc4e1536 | 26 | |
clemente | 0:92bedc4e1536 | 27 | // rtc.RTC_Start( &sec, &alm); |
clemente | 0:92bedc4e1536 | 28 | rtc.RTC_Start( NULL, &alm); |
clemente | 0:92bedc4e1536 | 29 | pc.printf("Alarm configured [15sec], "); |
clemente | 0:92bedc4e1536 | 30 | |
clemente | 0:92bedc4e1536 | 31 | count=0; |
clemente | 0:92bedc4e1536 | 32 | while(1) |
clemente | 0:92bedc4e1536 | 33 | { |
clemente | 0:92bedc4e1536 | 34 | // |
clemente | 0:92bedc4e1536 | 35 | pc.printf("enter sleep...\r\n"); |
clemente | 0:92bedc4e1536 | 36 | deepsleep(); |
clemente | 0:92bedc4e1536 | 37 | |
clemente | 0:92bedc4e1536 | 38 | pc.printf("exit sleep: %d\r\n", ++count); |
clemente | 0:92bedc4e1536 | 39 | } |
clemente | 0:92bedc4e1536 | 40 | } |
clemente | 0:92bedc4e1536 | 41 | |
clemente | 0:92bedc4e1536 | 42 | void sec ( void) |
clemente | 0:92bedc4e1536 | 43 | { |
clemente | 0:92bedc4e1536 | 44 | pc.printf("sec\r\n"); |
clemente | 0:92bedc4e1536 | 45 | } |
clemente | 0:92bedc4e1536 | 46 | |
clemente | 0:92bedc4e1536 | 47 | void alm ( void) |
clemente | 0:92bedc4e1536 | 48 | { |
clemente | 0:92bedc4e1536 | 49 | pc.printf("alrm\r\n"); |
clemente | 0:92bedc4e1536 | 50 | } |
clemente | 0:92bedc4e1536 | 51 | |
clemente | 0:92bedc4e1536 | 52 | void sleep( void) |
clemente | 0:92bedc4e1536 | 53 | { |
clemente | 0:92bedc4e1536 | 54 | SCB->SCR &= ~SCB_SCR_SLEEPDEEP_MASK; |
clemente | 0:92bedc4e1536 | 55 | __wfi(); |
clemente | 0:92bedc4e1536 | 56 | } |
clemente | 0:92bedc4e1536 | 57 | |
clemente | 0:92bedc4e1536 | 58 | void deepsleep (void) |
clemente | 0:92bedc4e1536 | 59 | { |
clemente | 0:92bedc4e1536 | 60 | /* Set the SLEEPDEEP bit to enable deep sleep mode (STOP) */ |
clemente | 0:92bedc4e1536 | 61 | SCB->SCR |= SCB_SCR_SLEEPDEEP_MASK; |
clemente | 0:92bedc4e1536 | 62 | |
clemente | 0:92bedc4e1536 | 63 | __wfi(); |
clemente | 0:92bedc4e1536 | 64 | } |