University of Plymouth - Stages 1, 2 and 3
/
Task325-FZ429
Demo of ISR waking MCU
main.cpp
- Committer:
- noutram
- Date:
- 2019-09-12
- Revision:
- 5:c11d12dab1e2
- Parent:
- 4:684525c93d74
File content as of revision 5:c11d12dab1e2:
#include "mbed.h" // This uses INTERRUPTS to detect a falling edge of the switch input // However, pressing and releasing the switch can result in spurious falling edges // which trigger the routine //Uncomment this if you want to use the onboard LEDs and Blue Switch on a F429ZI //#define USEONBOARD //Declare functions void sw1FallingEdge(); //Global Objects #ifdef USEONBOARD DigitalOut red_led(LED3); DigitalOut green_led(LED1); InterruptIn sw1(USER_BUTTON); #else DigitalOut red_led(D7); DigitalOut green_led(D5); InterruptIn sw1(D4); #endif //Interrupt service routine for a rising edge (press) void sw1FallingEdge() { red_led = !red_led; //Toggle the LED } Serial pc(USBTX, USBRX); //Main - only has to initialise and sleep int main() { pc.set_blocking(true); red_led = 0; green_led = 1; //Configure interrupts, wait for first rising edge sw1.fall(&sw1FallingEdge); //Main Polling Loop while (true) { //Put CPU back to sleep sleep(); //You can ONLY reach this point if an ISR wakes the CPU green_led = !green_led; //Any use of the serial port will produce a series of interrupts //pc.puts("Ping!\n\r"); } //end while }