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@4:19bf8c7e9b56, 2019-11-08 (annotated)
- Committer:
- noutram
- Date:
- Fri Nov 08 10:28:31 2019 +0000
- Revision:
- 4:19bf8c7e9b56
- Parent:
- 3:4090b465745c
Updated for 2019
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
noutram | 0:e48f4ddb9393 | 1 | #include "mbed.h" |
noutram | 0:e48f4ddb9393 | 2 | |
noutram | 0:e48f4ddb9393 | 3 | |
noutram | 0:e48f4ddb9393 | 4 | //Function declarations |
noutram | 0:e48f4ddb9393 | 5 | void Function1(); |
noutram | 0:e48f4ddb9393 | 6 | void Function2(); |
noutram | 0:e48f4ddb9393 | 7 | |
noutram | 0:e48f4ddb9393 | 8 | //I/O |
noutram | 0:e48f4ddb9393 | 9 | DigitalOut onBoardLED(LED1); |
noutram | 1:20f8dc1354d0 | 10 | DigitalOut redLED(PE_15); |
noutram | 1:20f8dc1354d0 | 11 | DigitalOut yellowLED(PB_10); |
noutram | 1:20f8dc1354d0 | 12 | DigitalOut greenLED(PB_11); |
noutram | 0:e48f4ddb9393 | 13 | |
noutram | 0:e48f4ddb9393 | 14 | DigitalIn onBoardSwitch(USER_BUTTON); |
noutram | 1:20f8dc1354d0 | 15 | DigitalIn SW1(PE_12); |
noutram | 1:20f8dc1354d0 | 16 | DigitalIn SW2(PE_14); |
noutram | 0:e48f4ddb9393 | 17 | |
noutram | 1:20f8dc1354d0 | 18 | //Create thread objects |
noutram | 0:e48f4ddb9393 | 19 | Thread t1, t2; |
noutram | 0:e48f4ddb9393 | 20 | |
noutram | 1:20f8dc1354d0 | 21 | //Thread |
noutram | 0:e48f4ddb9393 | 22 | void Function1() |
noutram | 0:e48f4ddb9393 | 23 | { |
noutram | 0:e48f4ddb9393 | 24 | while (true) { |
noutram | 0:e48f4ddb9393 | 25 | redLED = !redLED; |
noutram | 3:4090b465745c | 26 | ThisThread::sleep_for(2000); |
noutram | 0:e48f4ddb9393 | 27 | } |
noutram | 0:e48f4ddb9393 | 28 | } |
noutram | 0:e48f4ddb9393 | 29 | |
noutram | 1:20f8dc1354d0 | 30 | //Thread |
noutram | 0:e48f4ddb9393 | 31 | void Function2() |
noutram | 0:e48f4ddb9393 | 32 | { |
noutram | 0:e48f4ddb9393 | 33 | while (true) { |
noutram | 0:e48f4ddb9393 | 34 | yellowLED = !yellowLED; |
noutram | 3:4090b465745c | 35 | ThisThread::sleep_for(1000); |
noutram | 0:e48f4ddb9393 | 36 | } |
noutram | 0:e48f4ddb9393 | 37 | } |
noutram | 0:e48f4ddb9393 | 38 | |
noutram | 0:e48f4ddb9393 | 39 | //Main thread |
noutram | 0:e48f4ddb9393 | 40 | int main() { |
noutram | 1:20f8dc1354d0 | 41 | //Initial state |
noutram | 0:e48f4ddb9393 | 42 | redLED = 0; |
noutram | 0:e48f4ddb9393 | 43 | yellowLED = 0; |
noutram | 1:20f8dc1354d0 | 44 | greenLED = 0; |
noutram | 0:e48f4ddb9393 | 45 | |
noutram | 1:20f8dc1354d0 | 46 | //Create and run threads (C function pointers) |
noutram | 0:e48f4ddb9393 | 47 | t1.start(Function1); |
noutram | 0:e48f4ddb9393 | 48 | t2.start(Function2); |
noutram | 0:e48f4ddb9393 | 49 | |
noutram | 1:20f8dc1354d0 | 50 | //Main thread loop |
noutram | 0:e48f4ddb9393 | 51 | while(1) { |
noutram | 4:19bf8c7e9b56 | 52 | //ThisThread::sleep_for(osWaitForever); //There is a task to uncomment this |
noutram | 3:4090b465745c | 53 | ThisThread::sleep_for(5000); |
noutram | 1:20f8dc1354d0 | 54 | printf("Main is Awake\n"); //Should not happen when osWaitForever is used |
noutram | 0:e48f4ddb9393 | 55 | } |
noutram | 0:e48f4ddb9393 | 56 | } |