summaryrefslogtreecommitdiff
path: root/project/Core/Src/System
diff options
context:
space:
mode:
Diffstat (limited to 'project/Core/Src/System')
-rw-r--r--project/Core/Src/System/systick.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/project/Core/Src/System/systick.c b/project/Core/Src/System/systick.c
index 263defd..58ee2b1 100644
--- a/project/Core/Src/System/systick.c
+++ b/project/Core/Src/System/systick.c
@@ -1,5 +1,9 @@
#include "systick.h"
+systick_t *get_systick() {
+ return (systick_t *) 0xE000E010;
+}
+
// This function is to Initialize SysTick registers
void init_systick()
{
@@ -10,6 +14,12 @@ void init_systick()
// Set the LOAD (RVR) to 8 million to give us a 100 milliseconds timer.
// Set the clock source bit in the CTRL (CSR) to the internal clock.
// Set the enable bit in the CTRL (CSR) to start the timer.
+ systick_t *s = get_systick();
+
+ s->CSR = 0;
+ s->RVR = 8000000;
+ s->CSR |= 1<<2;
+ s->CSR |= 1;
}
// This fuction is to create delay using SysTick timer counter
@@ -20,4 +30,10 @@ void delay_systick()
// Inside that for loop check the COUNTFLAG bit in the CTRL (CSR)
// register in a loop. When that bit is set exit this inner loop
// to do another pass in the outer loop of 10.
+ systick_t *s = get_systick();
+
+ for (int i = 0; i < 10; i++) {
+ while (~s->CSR & (1<<16))
+ ;
+ }
}