This is a sample to make Software Standby using OS.

Committer:
dkato
Date:
Mon Oct 07 03:38:30 2019 +0000
Revision:
2:c0f92fd0e8e9
Parent:
1:29fa0989ec31
Child:
3:64e8fa1b8787
Supports mbed-os-5.14

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:27ae610e630e 1 #include "mbed.h"
dkato 0:27ae610e630e 2
dkato 0:27ae610e630e 3 InterruptIn button(USER_BUTTON0);
dkato 0:27ae610e630e 4 DigitalOut led1(LED1);
dkato 0:27ae610e630e 5 Thread * pTestTask = NULL;
dkato 0:27ae610e630e 6
dkato 0:27ae610e630e 7 static void interrupt_button(void) {
dkato 0:27ae610e630e 8 #if(0) // It may or may not be present.
dkato 0:27ae610e630e 9 if (pTestTask != NULL) {
dkato 0:27ae610e630e 10 pTestTask->signal_set(1);
dkato 0:27ae610e630e 11 }
dkato 0:27ae610e630e 12 #endif
dkato 0:27ae610e630e 13 }
dkato 0:27ae610e630e 14
dkato 0:27ae610e630e 15 void test_task(void) {
dkato 0:27ae610e630e 16 int test_cnt = 0;
dkato 0:27ae610e630e 17
dkato 0:27ae610e630e 18 button.fall(&interrupt_button);
dkato 0:27ae610e630e 19 button.rise(&interrupt_button);
dkato 0:27ae610e630e 20
dkato 0:27ae610e630e 21 while (true) {
dkato 2:c0f92fd0e8e9 22 sleep_manager_sleep_auto();
dkato 0:27ae610e630e 23 #if(0) // It may or may not be present.
dkato 0:27ae610e630e 24 // It becomes sleep during idle task.
dkato 0:27ae610e630e 25 Thread::signal_wait(1);
dkato 0:27ae610e630e 26 #endif
dkato 0:27ae610e630e 27 led1 = !led1;
dkato 2:c0f92fd0e8e9 28 printf("%d\r\n", test_cnt++);
dkato 2:c0f92fd0e8e9 29 ThisThread::sleep_for(5); // Wait for output completion of printf().
dkato 0:27ae610e630e 30 }
dkato 0:27ae610e630e 31 }
dkato 0:27ae610e630e 32
dkato 0:27ae610e630e 33 int main() {
dkato 0:27ae610e630e 34 pTestTask = new Thread();
dkato 0:27ae610e630e 35 pTestTask->start(test_task);
dkato 0:27ae610e630e 36 }