Anastasios Barlas
/
digitalInInterrupt_sample
Lab 2 answer to part 2
Fork of digitalInInterrupt_sample by
main.cpp
- Committer:
- WilliamMarshQMUL
- Date:
- 2017-01-23
- Revision:
- 1:13e0c1956b54
- Parent:
- 0:a66a8cb0012c
- Child:
- 2:071f22412cdc
File content as of revision 1:13e0c1956b54:
#include "mbed.h" #include "rtos.h" // Labs 2: Example program for using an interrupt (or callback) // ----------------------------------------------------------- // A callback function (corresponding to an ISR) is called when a button // is pressed // The callback uses a shared variable to signal another thread InterruptIn button(PTD0); DigitalOut led(LED_RED); Thread flashT ; volatile int pressEvent = 0 ; // Signal when the button is pressed // Note: bounce may occur void buttonCallback(){ pressEvent = 1 ; } // Toggle the LED every time the button is pressed // Note: the LED could be toggled in the callback void flash() { while(true) { if (pressEvent) { led = !led ; pressEvent = 0 ; // Clear the event variable } Thread::wait(100) ; } } int main() { button.mode(PullUp); // Ensure button i/p has pull up button.rise(&buttonCallback) ; // Attach function to rise event flashT.start(&flash) ; // Start the flashing thread running }