Solution to Interrupt Exercise
Fork of digitalInInterrupt_sample by
main.cpp
- Committer:
- Sarang
- Date:
- 2018-02-01
- Revision:
- 4:60cc36256d3e
- Parent:
- 3:05b6a1431a6b
File content as of revision 4:60cc36256d3e:
#include "mbed.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); InterruptIn button1(PTD2); DigitalOut led(LED_RED); DigitalOut led1(LED_BLUE); volatile int pressEvent = 0 ; volatile int pressEvent1 = 0 ; volatile int timez = 500 ; volatile int buttonpressed = 1; volatile int buttonpressed1 = 1; // This function is invoked when then interrupt occurs // Signal that the button has been pressed // Note: bounce may occur void buttonCallback() { pressEvent = 1 ; } void buttonCallback1() { pressEvent1 = 1 ; } /* ---- Main function (default thread) ---- Note that if this thread completes, nothing else works */ int main() { button.mode(PullUp); // Ensure button i/p has pull up button.fall(&buttonCallback) ; // Attach function to falling edge button1.mode(PullUp); button1.fall(&buttonCallback1); while(true) { // Toggle the LED every time the button is pressed if (pressEvent) { buttonpressed = !buttonpressed; pressEvent = 0 ; // Clear the event variable } if (pressEvent1) { buttonpressed1 = !buttonpressed1; pressEvent1 = 0 ; // Clear the event variable } if (buttonpressed){ led =!led; } if (buttonpressed1){ led1 =!led1; } Thread::wait(timez) ; } }