Daiki Kato
/
Sleep_test_use_OS
This is a sample to make sleep using OS.
main.cpp@2:22bc64c6ee90, 2016-11-18 (annotated)
- Committer:
- dkato
- Date:
- Fri Nov 18 10:39:33 2016 +0000
- Revision:
- 2:22bc64c6ee90
- Parent:
- 1:8ba32924482c
update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dkato | 0:680321964ff9 | 1 | #include "mbed.h" |
dkato | 0:680321964ff9 | 2 | #include "rtos.h" |
dkato | 0:680321964ff9 | 3 | |
dkato | 0:680321964ff9 | 4 | InterruptIn button(USER_BUTTON0); |
dkato | 0:680321964ff9 | 5 | DigitalOut led1(LED1); |
dkato | 0:680321964ff9 | 6 | Thread * pTestTask = NULL; |
dkato | 1:8ba32924482c | 7 | |
dkato | 1:8ba32924482c | 8 | static void idle_hook(void) { |
dkato | 2:22bc64c6ee90 | 9 | __WFI(); // Do not set when using SoftwareStandby. |
dkato | 1:8ba32924482c | 10 | } |
dkato | 0:680321964ff9 | 11 | |
dkato | 0:680321964ff9 | 12 | static void interrupt_button(void) { |
dkato | 0:680321964ff9 | 13 | if (pTestTask != NULL) { |
dkato | 0:680321964ff9 | 14 | pTestTask->signal_set(1); |
dkato | 0:680321964ff9 | 15 | } |
dkato | 0:680321964ff9 | 16 | } |
dkato | 0:680321964ff9 | 17 | |
dkato | 0:680321964ff9 | 18 | void test_task(void) { |
dkato | 0:680321964ff9 | 19 | int test_cnt = 0; |
dkato | 0:680321964ff9 | 20 | |
dkato | 0:680321964ff9 | 21 | button.fall(&interrupt_button); |
dkato | 0:680321964ff9 | 22 | button.rise(&interrupt_button); |
dkato | 0:680321964ff9 | 23 | |
dkato | 0:680321964ff9 | 24 | while (true) { |
dkato | 0:680321964ff9 | 25 | // It becomes sleep during idle task. |
dkato | 0:680321964ff9 | 26 | Thread::signal_wait(1); |
dkato | 0:680321964ff9 | 27 | led1 = !led1; |
dkato | 0:680321964ff9 | 28 | printf("%d\n", test_cnt++); |
dkato | 0:680321964ff9 | 29 | } |
dkato | 0:680321964ff9 | 30 | } |
dkato | 0:680321964ff9 | 31 | |
dkato | 0:680321964ff9 | 32 | int main() { |
dkato | 1:8ba32924482c | 33 | Thread::attach_idle_hook(idle_hook); |
dkato | 0:680321964ff9 | 34 | pTestTask = new Thread(); |
dkato | 0:680321964ff9 | 35 | pTestTask->start(test_task); |
dkato | 0:680321964ff9 | 36 | } |