implement button press/release with double check using fall/rise & timeout

Dependencies:   mbed

Revision:
2:d68f26154551
Parent:
1:63744318c4d7
Child:
3:e25965edbbe7
--- a/main.cpp	Sun Aug 28 05:17:30 2016 +0000
+++ b/main.cpp	Sun Aug 28 06:22:58 2016 +0000
@@ -1,15 +1,37 @@
 #include "mbed.h"
 
-DigitalIn mybutton(PB_3);
+//------------------------------------
+// USER_KEY-PB3
+//------------------------------------
+InterruptIn mybutton(PB_3);
+//------------------------------------
+// LED1-PA5
+//------------------------------------
 DigitalOut myled(PA_5);
+//------------------------------------
+// Hyperterminal configuration
+// 9600 bauds, 8-bit data, no parity
+// SERIAL_TX-PA2, SERIAL_RX-PA3
+//------------------------------------
+Serial pc(PA_2, PA_3);
+
+#define entry()    pc.printf("func:%s\n", __func__)
+
+void pressed(void)
+{
+    entry();
+    myled = 1;
+}
+
+void released(void)
+{
+    myled = 0;
+}
 
 int main(void)
 {
+    mybutton.fall(&pressed);
+    mybutton.rise(&released);
     while(1) {
-        if(mybutton == 0) {
-            myled = 1;  // button pressed
-        } else {
-            myled = 0;  // button released
-        }
     }
 }
\ No newline at end of file