aboutsummaryrefslogtreecommitdiffstats
path: root/examples/test-systick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/test-systick.cpp')
-rw-r--r--examples/test-systick.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/test-systick.cpp b/examples/test-systick.cpp
new file mode 100644
index 0000000..247892d
--- /dev/null
+++ b/examples/test-systick.cpp
@@ -0,0 +1,60 @@
+// Tests the SysTick enable/disable functions
+//
+#include "wirish.h"
+#include "systick.h"
+
+#define LED_PIN 13
+#define PWM_PIN 2
+#define BUT 38
+
+void setup()
+{
+ /* Set up the LED to blink */
+ pinMode(LED_PIN, OUTPUT);
+
+ /* Turn on PWM on pin PWM_PIN */
+ pinMode(PWM_PIN, PWM);
+ pwmWrite(PWM_PIN, 0x8000);
+
+ pinMode(BUT, INPUT_PULLDOWN);
+}
+
+int toggle = 0;
+long time = 0;
+
+void loop() {
+ toggle ^= 1;
+ digitalWrite(LED_PIN, toggle);
+
+ // An artificial delay
+ int16 i = 1;
+ float j = 1;
+ for(i=0; i<6553; i++) {
+ j = sqrt(j) + 1;
+ }
+
+ if(digitalRead(BUT)) {
+ systick_disable();
+ } else {
+ systick_resume();
+ }
+
+ //SerialUSB.println(micros()); // there is a bug with this
+ SerialUSB.println(millis());
+}
+
+// Force init to be called *first*, i.e. before static object allocation.
+// Otherwise, statically allocated object that need libmaple may fail.
+ __attribute__(( constructor )) void premain() {
+ init();
+}
+
+int main(void)
+{
+ setup();
+
+ while (1) {
+ loop();
+ }
+ return 0;
+}