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.
Diff: main.cpp
- Revision:
- 2:cd1fe8c29793
- Parent:
- 1:4709af498799
- Child:
- 3:8d87cbabe37e
--- a/main.cpp Tue Jan 24 18:24:25 2017 +0000
+++ b/main.cpp Tue Jan 16 18:02:44 2018 +0000
@@ -1,5 +1,4 @@
#include "mbed.h"
-#include "rtos.h"
// Labs 2: Example program for polling an input
// --------------------------------------------
@@ -7,13 +6,12 @@
// - The thread monitors the position of the button
// - When the button transitions up and down, a press event is signaled
// - Button bounce is guarded against
-// A second thread checks for the press event and toggles the LED
+// A second thread (the default one) checks for the press event and toggles the LED
-DigitalIn button(PTD0, PullUp);
-DigitalOut led(LED_RED);
+DigitalIn b1(PTD0, PullUp);
+DigitalOut led(LED1);
Thread pollT ; // thread to poll
-Thread flashT ; // thread to flash light
volatile int pressEvent = 0 ; // Variabe set by the polling thread
enum buttonPos { up, down, bounce }; // Button positions
@@ -23,19 +21,19 @@
while (true) {
switch (pos) {
case up :
- if (button == 0) { // now down
+ if (!b1.read()) { // now down
pressEvent = 1 ; // transition occurred
pos = down ;
}
break ;
case down :
- if (button == 1) { // no longer down
+ if (b1 == 1) { // no longer down
bcounter = 3 ; // wait four cycles
pos = bounce ;
}
break ;
case bounce :
- if (button == 0) { // down again - button has bounced
+ if (b1 == 0) { // down again - button has bounced
pos = down ; // no event
} else if (bcounter == 0) {
pos = up ; // delay passed - reset to up
@@ -48,8 +46,13 @@
}
}
-// Toggle the LED every time the button is pressed
-void flash() {
+/* ---- Main function (default thread) ----
+ Note that if this thread completes, nothing else works
+ */
+int main() {
+ led = 1 ; // Initially off
+ pollT.start(callback(polling));
+
while(true) {
if (pressEvent) {
pressEvent = 0 ; // clear the event variable
@@ -57,9 +60,4 @@
}
Thread::wait(100) ;
}
-}
-
-int main() {
- pollT.start(&polling) ; // start the polling thread running
- flashT.start(&flash) ; // start the flashing thread running
}
\ No newline at end of file