diff options
Diffstat (limited to 'project/Core/Src/System/systick.c')
| -rw-r--r-- | project/Core/Src/System/systick.c | 16 |
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)) + ; + } } |
