Nuvoton / Mbed OS NuMaker-mbed-tickless-example
Committer:
ccli8
Date:
Fri Feb 21 17:52:25 2020 +0800
Revision:
18:e236110ce841
Parent:
17:0f81445cbbf0
Child:
19:adb1816661ee
Support M252

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