Nuvoton / Mbed OS NuMaker-mbed-tickless-example
Committer:
ccli8
Date:
Mon Oct 02 11:24:10 2017 +0800
Revision:
10:d2e2c79389e1
Parent:
1:eb1da9d36e12
Child:
17:0f81445cbbf0
Support NANO130

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 #if defined(TARGET_NUMAKER_PFM_NUC472)
ccli8 1:eb1da9d36e12 5 // SW
ccli8 1:eb1da9d36e12 6 #define BUTTON1 SW1
ccli8 1:eb1da9d36e12 7 #define BUTTON2 SW2
ccli8 1:eb1da9d36e12 8
ccli8 1:eb1da9d36e12 9 #elif defined(TARGET_NUMAKER_PFM_M453)
ccli8 1:eb1da9d36e12 10 // SW
ccli8 1:eb1da9d36e12 11 #define BUTTON1 SW2
ccli8 1:eb1da9d36e12 12 #define BUTTON2 SW3
ccli8 1:eb1da9d36e12 13
ccli8 1:eb1da9d36e12 14 #elif defined(TARGET_NUMAKER_PFM_M487)
ccli8 1:eb1da9d36e12 15 // SW
ccli8 1:eb1da9d36e12 16 #define BUTTON1 SW2
ccli8 1:eb1da9d36e12 17 #define BUTTON2 SW3
ccli8 1:eb1da9d36e12 18
ccli8 10:d2e2c79389e1 19 #elif defined(TARGET_NUMAKER_PFM_NANO130)
ccli8 10:d2e2c79389e1 20 // SW
ccli8 10:d2e2c79389e1 21 #define BUTTON1 SW1
ccli8 10:d2e2c79389e1 22 #define BUTTON2 SW2
ccli8 10:d2e2c79389e1 23
ccli8 1:eb1da9d36e12 24 #endif
ccli8 1:eb1da9d36e12 25
ccli8 1:eb1da9d36e12 26 static InterruptIn button1(BUTTON1);
ccli8 1:eb1da9d36e12 27 static InterruptIn button2(BUTTON2);
ccli8 1:eb1da9d36e12 28 static void button1_release(void);
ccli8 1:eb1da9d36e12 29 static void button2_release(void);
ccli8 1:eb1da9d36e12 30
ccli8 10:d2e2c79389e1 31 #if defined(TARGET_NUMAKER_PFM_NANO130)
ccli8 10:d2e2c79389e1 32 static void button1_press(void);
ccli8 10:d2e2c79389e1 33 static void button2_press(void);
ccli8 10:d2e2c79389e1 34 #endif
ccli8 10:d2e2c79389e1 35
ccli8 1:eb1da9d36e12 36 void config_button_wakeup(void)
ccli8 1:eb1da9d36e12 37 {
ccli8 1:eb1da9d36e12 38 button1.rise(&button1_release);
ccli8 1:eb1da9d36e12 39 button2.rise(&button2_release);
ccli8 10:d2e2c79389e1 40
ccli8 10:d2e2c79389e1 41 /* KNOWN ISSUE: On NANO130 (NANO100 series), there's H/W issue with GPIO wake-up from
ccli8 10:d2e2c79389e1 42 * Power-down (deep sleep). Workaround by enabling both edge triggers. */
ccli8 10:d2e2c79389e1 43 #if defined(TARGET_NUMAKER_PFM_NANO130)
ccli8 10:d2e2c79389e1 44 button1.fall(&button1_press);
ccli8 10:d2e2c79389e1 45 button2.fall(&button2_press);
ccli8 10:d2e2c79389e1 46 #endif
ccli8 1:eb1da9d36e12 47 }
ccli8 1:eb1da9d36e12 48
ccli8 1:eb1da9d36e12 49 void button1_release(void)
ccli8 1:eb1da9d36e12 50 {
ccli8 1:eb1da9d36e12 51 wakeup_eventflags.set(EventFlag_Wakeup_Button1);
ccli8 1:eb1da9d36e12 52 }
ccli8 1:eb1da9d36e12 53
ccli8 1:eb1da9d36e12 54 void button2_release(void)
ccli8 1:eb1da9d36e12 55 {
ccli8 1:eb1da9d36e12 56 wakeup_eventflags.set(EventFlag_Wakeup_Button2);
ccli8 1:eb1da9d36e12 57 }
ccli8 10:d2e2c79389e1 58
ccli8 10:d2e2c79389e1 59 #if defined(TARGET_NUMAKER_PFM_NANO130)
ccli8 10:d2e2c79389e1 60 void button1_press(void)
ccli8 10:d2e2c79389e1 61 {
ccli8 10:d2e2c79389e1 62 wakeup_eventflags.set(EventFlag_Wakeup_Button1);
ccli8 10:d2e2c79389e1 63 }
ccli8 10:d2e2c79389e1 64
ccli8 10:d2e2c79389e1 65 void button2_press(void)
ccli8 10:d2e2c79389e1 66 {
ccli8 10:d2e2c79389e1 67 wakeup_eventflags.set(EventFlag_Wakeup_Button2);
ccli8 10:d2e2c79389e1 68 }
ccli8 10:d2e2c79389e1 69 #endif