NuMaker tickless example

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?

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 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) */