aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/systick.c
diff options
context:
space:
mode:
authoriperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123>2009-12-17 02:37:07 +0000
committeriperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123>2009-12-17 02:37:07 +0000
commit32e57dac2e61e79b029593eb4d34d727bcc10678 (patch)
tree98d7ff41993576bb150d13d5f63dc744f6812852 /src/lib/systick.c
downloadlibrambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.tar.gz
librambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.zip
Initial commit of library code, moved from leaftest repo
git-svn-id: https://leaflabs.googlecode.com/svn/trunk/library@69 749a229e-a60e-11de-b98f-4500b42dc123
Diffstat (limited to 'src/lib/systick.c')
-rw-r--r--src/lib/systick.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/systick.c b/src/lib/systick.c
new file mode 100644
index 0000000..f328ae0
--- /dev/null
+++ b/src/lib/systick.c
@@ -0,0 +1,30 @@
+#include "systick.h"
+
+#define MILLIS_INC 1
+
+volatile uint32_t systick_timer_overflow_count = 0;
+volatile uint32_t systick_timer_millis = 0;
+static uint8_t systick_timer_fract = 0;
+
+void systick_init(void) {
+ /* Set the reload counter to tick every 1ms */
+ SYSTICK_RELOAD = MAPLE_RELOAD_VAL;
+
+ /* Clock the system timer with the core clock
+ * and turn it on, interrrupt every 1ms to keep track of millis()*/
+ SYSTICK_CSR = SYSTICK_SRC_HCLK |
+ SYSTICK_ENABLE |
+ SYSTICK_TICKINT;
+}
+
+void SysTickHandler(void)
+{
+ uint32_t m = systick_timer_millis;
+ uint8_t f = systick_timer_fract;
+
+ m += MILLIS_INC;
+ systick_timer_millis = m;
+ systick_timer_overflow_count++;
+}
+
+