NuMaker tickless example

Committer:
ccli8
Date:
Tue Sep 12 16:16:43 2017 +0800
Revision:
1:eb1da9d36e12
Child:
10:d2e2c79389e1
Support NUC472/M453/M487

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ccli8 1:eb1da9d36e12 1 #include "mbed.h"
ccli8 1:eb1da9d36e12 2 #include "wakeup.h"
ccli8 1:eb1da9d36e12 3
ccli8 1:eb1da9d36e12 4 void WDT_IRQHandler(void)
ccli8 1:eb1da9d36e12 5 {
ccli8 1:eb1da9d36e12 6 /* Check WDT interrupt flag */
ccli8 1:eb1da9d36e12 7 if (WDT_GET_TIMEOUT_INT_FLAG()) {
ccli8 1:eb1da9d36e12 8 WDT_CLEAR_TIMEOUT_INT_FLAG();
ccli8 1:eb1da9d36e12 9 WDT_RESET_COUNTER();
ccli8 1:eb1da9d36e12 10 }
ccli8 1:eb1da9d36e12 11
ccli8 1:eb1da9d36e12 12 // Check WDT wake-up flag
ccli8 1:eb1da9d36e12 13 if (WDT_GET_TIMEOUT_WAKEUP_FLAG()) {
ccli8 1:eb1da9d36e12 14 WDT_CLEAR_TIMEOUT_WAKEUP_FLAG();
ccli8 1:eb1da9d36e12 15
ccli8 1:eb1da9d36e12 16 wakeup_eventflags.set(EventFlag_Wakeup_WDT_Timeout);
ccli8 1:eb1da9d36e12 17 }
ccli8 1:eb1da9d36e12 18 }
ccli8 1:eb1da9d36e12 19
ccli8 1:eb1da9d36e12 20 void config_wdt_wakeup()
ccli8 1:eb1da9d36e12 21 {
ccli8 1:eb1da9d36e12 22 /* Enable IP module clock */
ccli8 1:eb1da9d36e12 23 CLK_EnableModuleClock(WDT_MODULE);
ccli8 1:eb1da9d36e12 24
ccli8 1:eb1da9d36e12 25 /* Select IP clock source */
ccli8 1:eb1da9d36e12 26 CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LIRC, 0);
ccli8 1:eb1da9d36e12 27
ccli8 1:eb1da9d36e12 28 SYS_UnlockReg();
ccli8 1:eb1da9d36e12 29 /* Alarm every 2^14 LIRC clocks, disable system reset, enable system wake-up */
ccli8 1:eb1da9d36e12 30 WDT_Open(WDT_TIMEOUT_2POW14, 0, FALSE, TRUE);
ccli8 1:eb1da9d36e12 31 SYS_LockReg();
ccli8 1:eb1da9d36e12 32
ccli8 1:eb1da9d36e12 33 /* NOTE: The name of symbol WDT_IRQHandler is mangled in C++ and cannot override that in startup file in C.
ccli8 1:eb1da9d36e12 34 * So the NVIC_SetVector call cannot be left out. */
ccli8 1:eb1da9d36e12 35 NVIC_SetVector(WDT_IRQn, (uint32_t) WDT_IRQHandler);
ccli8 1:eb1da9d36e12 36 NVIC_EnableIRQ(WDT_IRQn);
ccli8 1:eb1da9d36e12 37 SYS_UnlockReg();
ccli8 1:eb1da9d36e12 38 /* Enable WDT timeout interrupt */
ccli8 1:eb1da9d36e12 39 WDT_EnableInt();
ccli8 1:eb1da9d36e12 40 SYS_LockReg();
ccli8 1:eb1da9d36e12 41 }