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.
Diff: main.cpp
- Revision:
- 0:e8be38c50b44
- Child:
- 1:81b129bec569
diff -r 000000000000 -r e8be38c50b44 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Jan 06 12:08:57 2016 +0000
@@ -0,0 +1,93 @@
+/*
+
+2645_Ticker
+
+Sample code from ELEC2645 Week 16 Lab
+
+Demonstrates how to implement a simple FSM counter
+
+(c) Craig A. Evans, University of Leeds, Jan 2016
+
+*/
+
+#include "mbed.h"
+
+// K64F on-board LEDs
+DigitalOut r_led(LED_RED);
+DigitalOut g_led(LED_GREEN);
+DigitalOut b_led(LED_BLUE);
+// K64F on-board switches
+InterruptIn sw2(SW2);
+InterruptIn sw3(SW3);
+
+// LEDs to display counter output
+// connect up external LEDs to these pins with appropriate current-limiting resistor
+BusOut output(PTB2,PTB3,PTB10,PTB11);
+
+// array of states in the FSM, each element is the output of the counter
+int fsm[4] = {1,2,4,8};
+
+// function prototypes
+// error function hangs flashing an LED
+void error();
+// set-up the on-board LEDs and switches
+void init_K64F();
+
+int main()
+{
+ init_K64F();
+ // set inital state
+ int state = 0;
+
+ while(1) { // loop forever
+
+ output = fsm[state]; // output current state
+
+ // check which state we are in and see which the next state should be
+ switch(state) {
+ case 0:
+ state = 1;
+ break;
+ case 1:
+ state = 2;
+ break;
+ case 2:
+ state = 3;
+ break;
+ case 3:
+ state = 0;
+ break;
+ default:
+ error(); //invalid state - call error routine
+ // or could jump to starting state i.e. state = 0
+ break;
+ }
+
+ wait(0.2); // small delay
+
+ }
+}
+
+void init_K64F()
+{
+ // on-board LEDs are active-low, so set pin high to turn them off.
+ r_led = 1;
+ g_led = 1;
+ b_led = 1;
+
+ // since the on-board switches have external pull-ups, we should disable the internal pull-down
+ // resistors that are enabled by default using InterruptIn
+ sw2.mode(PullNone);
+ sw3.mode(PullNone);
+
+}
+
+void error()
+{
+ while(1) { // if error, hang while flashing error message
+ r_led = 0;
+ wait(0.2);
+ r_led = 1;
+ wait(0.2);
+ }
+}
\ No newline at end of file