Nuvoton
/
NuMaker-mbed-tickless-example
NuMaker tickless example
wakeup_button.cpp@25:51d3dccddd8b, 14 months ago (annotated)
- Committer:
- cyliang
- Date:
- Wed Mar 01 03:53:04 2023 +0000
- Revision:
- 25:51d3dccddd8b
- Parent:
- 20:759aab916d47
Update os v6.17.0 for M467 target
Who changed what in which revision?
User | Revision | Line number | New 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 |
19:adb1816661ee | 24 | #elif defined(TARGET_NUMAKER_IOT_M487) |
ccli8 |
19:adb1816661ee | 25 | // SW |
ccli8 |
19:adb1816661ee | 26 | #define BUTTON1 SW2 |
ccli8 |
19:adb1816661ee | 27 | #define BUTTON2 SW3 |
ccli8 |
19:adb1816661ee | 28 | |
ccli8 |
17:0f81445cbbf0 | 29 | #elif defined(TARGET_NUMAKER_IOT_M263A) |
ccli8 |
10:d2e2c79389e1 | 30 | // SW |
ccli8 |
17:0f81445cbbf0 | 31 | #define BUTTON1 SW2 |
ccli8 |
17:0f81445cbbf0 | 32 | #define BUTTON2 SW3 |
ccli8 |
10:d2e2c79389e1 | 33 | |
ccli8 |
1:eb1da9d36e12 | 34 | #endif |
ccli8 |
1:eb1da9d36e12 | 35 | |
ccli8 |
18:e236110ce841 | 36 | #if defined(BUTTON1) && defined(BUTTON2) |
ccli8 |
18:e236110ce841 | 37 | |
ccli8 |
1:eb1da9d36e12 | 38 | static InterruptIn button1(BUTTON1); |
ccli8 |
1:eb1da9d36e12 | 39 | static InterruptIn button2(BUTTON2); |
ccli8 |
1:eb1da9d36e12 | 40 | static void button1_release(void); |
ccli8 |
1:eb1da9d36e12 | 41 | static void button2_release(void); |
ccli8 |
1:eb1da9d36e12 | 42 | |
ccli8 |
10:d2e2c79389e1 | 43 | #if defined(TARGET_NUMAKER_PFM_NANO130) |
ccli8 |
10:d2e2c79389e1 | 44 | static void button1_press(void); |
ccli8 |
10:d2e2c79389e1 | 45 | static void button2_press(void); |
ccli8 |
10:d2e2c79389e1 | 46 | #endif |
ccli8 |
10:d2e2c79389e1 | 47 | |
ccli8 |
1:eb1da9d36e12 | 48 | void config_button_wakeup(void) |
ccli8 |
1:eb1da9d36e12 | 49 | { |
ccli8 |
1:eb1da9d36e12 | 50 | button1.rise(&button1_release); |
ccli8 |
1:eb1da9d36e12 | 51 | button2.rise(&button2_release); |
ccli8 |
10:d2e2c79389e1 | 52 | |
ccli8 |
10:d2e2c79389e1 | 53 | /* KNOWN ISSUE: On NANO130 (NANO100 series), there's H/W issue with GPIO wake-up from |
ccli8 |
10:d2e2c79389e1 | 54 | * Power-down (deep sleep). Workaround by enabling both edge triggers. */ |
ccli8 |
10:d2e2c79389e1 | 55 | #if defined(TARGET_NUMAKER_PFM_NANO130) |
ccli8 |
10:d2e2c79389e1 | 56 | button1.fall(&button1_press); |
ccli8 |
10:d2e2c79389e1 | 57 | button2.fall(&button2_press); |
ccli8 |
10:d2e2c79389e1 | 58 | #endif |
ccli8 |
1:eb1da9d36e12 | 59 | } |
ccli8 |
1:eb1da9d36e12 | 60 | |
ccli8 |
1:eb1da9d36e12 | 61 | void button1_release(void) |
ccli8 |
1:eb1da9d36e12 | 62 | { |
ccli8 |
1:eb1da9d36e12 | 63 | wakeup_eventflags.set(EventFlag_Wakeup_Button1); |
ccli8 |
1:eb1da9d36e12 | 64 | } |
ccli8 |
1:eb1da9d36e12 | 65 | |
ccli8 |
1:eb1da9d36e12 | 66 | void button2_release(void) |
ccli8 |
1:eb1da9d36e12 | 67 | { |
ccli8 |
1:eb1da9d36e12 | 68 | wakeup_eventflags.set(EventFlag_Wakeup_Button2); |
ccli8 |
1:eb1da9d36e12 | 69 | } |
ccli8 |
10:d2e2c79389e1 | 70 | |
ccli8 |
10:d2e2c79389e1 | 71 | #if defined(TARGET_NUMAKER_PFM_NANO130) |
ccli8 |
10:d2e2c79389e1 | 72 | void button1_press(void) |
ccli8 |
10:d2e2c79389e1 | 73 | { |
ccli8 |
10:d2e2c79389e1 | 74 | wakeup_eventflags.set(EventFlag_Wakeup_Button1); |
ccli8 |
10:d2e2c79389e1 | 75 | } |
ccli8 |
10:d2e2c79389e1 | 76 | |
ccli8 |
10:d2e2c79389e1 | 77 | void button2_press(void) |
ccli8 |
10:d2e2c79389e1 | 78 | { |
ccli8 |
10:d2e2c79389e1 | 79 | wakeup_eventflags.set(EventFlag_Wakeup_Button2); |
ccli8 |
10:d2e2c79389e1 | 80 | } |
ccli8 |
10:d2e2c79389e1 | 81 | #endif |
ccli8 |
18:e236110ce841 | 82 | |
ccli8 |
18:e236110ce841 | 83 | #else |
ccli8 |
18:e236110ce841 | 84 | |
ccli8 |
18:e236110ce841 | 85 | void config_button_wakeup(void) |
ccli8 |
18:e236110ce841 | 86 | { |
ccli8 |
20:759aab916d47 | 87 | printf("Disable button wake-up on this target\n\n"); |
ccli8 |
18:e236110ce841 | 88 | } |
ccli8 |
18:e236110ce841 | 89 | |
ccli8 |
18:e236110ce841 | 90 | #endif /* #if defined(BUTTON1) && defined(BUTTON2) */ |