Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:a76aa1242d9e, 2018-04-26 (annotated)
- Committer:
- noutram
- Date:
- Thu Apr 26 07:56:30 2018 +0000
- Revision:
- 0:a76aa1242d9e
Demonstration of signal-wait
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| noutram | 0:a76aa1242d9e | 1 | #include "mbed.h" |
| noutram | 0:a76aa1242d9e | 2 | #define WAIT_FOR_ISR 1 |
| noutram | 0:a76aa1242d9e | 3 | //Function declarations |
| noutram | 0:a76aa1242d9e | 4 | void Function1(); |
| noutram | 0:a76aa1242d9e | 5 | void ISR(); |
| noutram | 0:a76aa1242d9e | 6 | |
| noutram | 0:a76aa1242d9e | 7 | //Thread |
| noutram | 0:a76aa1242d9e | 8 | Thread t1; |
| noutram | 0:a76aa1242d9e | 9 | |
| noutram | 0:a76aa1242d9e | 10 | //I/O |
| noutram | 0:a76aa1242d9e | 11 | DigitalOut led(LED1); |
| noutram | 0:a76aa1242d9e | 12 | InterruptIn onBoardSwitch(USER_BUTTON); |
| noutram | 0:a76aa1242d9e | 13 | |
| noutram | 0:a76aa1242d9e | 14 | //Switch ISR |
| noutram | 0:a76aa1242d9e | 15 | void ISR() { |
| noutram | 0:a76aa1242d9e | 16 | t1.signal_set(WAIT_FOR_ISR); |
| noutram | 0:a76aa1242d9e | 17 | } |
| noutram | 0:a76aa1242d9e | 18 | |
| noutram | 0:a76aa1242d9e | 19 | //Thread |
| noutram | 0:a76aa1242d9e | 20 | void Function1() { |
| noutram | 0:a76aa1242d9e | 21 | while (true) { |
| noutram | 0:a76aa1242d9e | 22 | Thread::signal_wait(WAIT_FOR_ISR); |
| noutram | 0:a76aa1242d9e | 23 | wait(0.2); //Debounce |
| noutram | 0:a76aa1242d9e | 24 | Thread::signal_clr(WAIT_FOR_ISR); |
| noutram | 0:a76aa1242d9e | 25 | led = !led; |
| noutram | 0:a76aa1242d9e | 26 | } |
| noutram | 0:a76aa1242d9e | 27 | } |
| noutram | 0:a76aa1242d9e | 28 | |
| noutram | 0:a76aa1242d9e | 29 | //Main thread |
| noutram | 0:a76aa1242d9e | 30 | int main() { |
| noutram | 0:a76aa1242d9e | 31 | //Initial state |
| noutram | 0:a76aa1242d9e | 32 | led = 1; |
| noutram | 0:a76aa1242d9e | 33 | onBoardSwitch.rise(ISR); |
| noutram | 0:a76aa1242d9e | 34 | |
| noutram | 0:a76aa1242d9e | 35 | //Create and run threads (C function pointers) |
| noutram | 0:a76aa1242d9e | 36 | t1.start(Function1); |
| noutram | 0:a76aa1242d9e | 37 | |
| noutram | 0:a76aa1242d9e | 38 | //Main thread loop |
| noutram | 0:a76aa1242d9e | 39 | while(1) { |
| noutram | 0:a76aa1242d9e | 40 | t1.join(); |
| noutram | 0:a76aa1242d9e | 41 | } |
| noutram | 0:a76aa1242d9e | 42 | } |