From e2ba305068f3045944789bf65e29fb2f2f557879 Mon Sep 17 00:00:00 2001 From: sowgro Date: Wed, 1 Oct 2025 23:38:18 -0400 Subject: complete homework 4 --- project/Core/Src/System/systick.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'project/Core/Src/System') 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)) + ; + } } -- cgit v1.2.3