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.
Fork of Task326 by
Revision 2:a5a574cd9474, committed 2019-09-12
- Comitter:
- noutram
- Date:
- Thu Sep 12 14:47:03 2019 +0000
- Parent:
- 1:a20f07949275
- Commit message:
- 2019
Changed in this revision
diff -r a20f07949275 -r a5a574cd9474 main.cpp
--- a/main.cpp Thu Jul 13 14:48:54 2017 +0000
+++ b/main.cpp Thu Sep 12 14:47:03 2019 +0000
@@ -1,5 +1,10 @@
#include "mbed.h"
+#ifdef TARGET_NUCLEO_F429ZI
+//Uncomment the following line to use onboard LEDs and Switch (F429ZI only)
+//#define USEONBOARD
+#endif
+
//A slight improvement - however, the pressing of the switch still registers
//spurious falling edges!
@@ -11,21 +16,30 @@
#define EDGE_FALLEN 0
//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);
-InterruptIn sw2(D3);
+#endif
Timeout sw1TimeOut; //Used to prevent switch bounce
+bool timerFired = false;
+bool switchPressed = false;
//Interrupt service routine for handling the timeout
void sw1TimeOutHandler() {
+ timerFired = true;
sw1TimeOut.detach(); //Stop the timeout counter firing
sw1.fall(&sw1FallingEdge); //Now wait for a falling edge
}
//Interrupt service routive for SW1 falling edge (release)
void sw1FallingEdge() {
+ switchPressed = true;
sw1.fall(NULL); //Disable this interrupt
red_led = !red_led; //Toggle LED
sw1TimeOut.attach(&sw1TimeOutHandler, 0.2); //Start timeout counter
@@ -33,8 +47,6 @@
//Main - only has to initialise and sleep
int main() {
- //Initial logging message
- puts("START");
//Initial state
red_led = 0; //Set RED LED to OFF
@@ -49,9 +61,14 @@
//Put CPU back to sleep
sleep();
- //You can ONLY reach this point if an ISR wakes the CPU
- puts("ISR just woke the MPU");
-
+ //You can ONLY reach this point if an ISR wakes the CPU - now there are two
+ if (timerFired == true) {
+ timerFired = false; //Reset flag
+ }
+ if (switchPressed == true) {
+ switchPressed = false; //Reset flag
+ green_led = !green_led;
+ }
} //end while
}
diff -r a20f07949275 -r a5a574cd9474 mbed-os.lib --- a/mbed-os.lib Thu Jul 13 14:48:54 2017 +0000 +++ b/mbed-os.lib Thu Sep 12 14:47:03 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#8828635da469162cf2854b5287561c663fb96e72 +https://github.com/ARMmbed/mbed-os/#1bf6b20df9d3cd5f29f001ffc6f0d0fcbbb96118
diff -r a20f07949275 -r a5a574cd9474 mbed_app.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_app.json Thu Sep 12 14:47:03 2019 +0000
@@ -0,0 +1,3 @@
+{
+ "requires": ["bare-metal"]
+}
\ No newline at end of file
