[rtems commit] bsps/arm: fix Cortex-M7 systick reload value
Sebastian Huber
sebh at rtems.org
Wed Oct 26 09:35:57 UTC 2022
Module: rtems
Branch: master
Commit: 1eae6f24fec6c3ab00d8f5d0152d2a5b57ea4589
Changeset: http://git.rtems.org/rtems/commit/?id=1eae6f24fec6c3ab00d8f5d0152d2a5b57ea4589
Author: Dariusz Sabala <dariusz.sabala at creotech.pl>
Date: Tue Oct 25 11:11:20 2022 +0200
bsps/arm: fix Cortex-M7 systick reload value
- see ARM DUI 0646C Arm Cortex-M7 Devices Generic User Guide
"The RELOAD value is calculated according to its use.
For example, to generate a multi-shot timer with a period
of N processor clock cycles, use a RELOAD value of N-1.
If the SysTick interrupt is required every 100 clock pulses,
set RELOAD to 99."
- see routines used in CMSIS project for reference
Close #4746.
---
bsps/arm/shared/clock/clock-armv7m.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bsps/arm/shared/clock/clock-armv7m.c b/bsps/arm/shared/clock/clock-armv7m.c
index 255de1ca42..c870684980 100644
--- a/bsps/arm/shared/clock/clock-armv7m.c
+++ b/bsps/arm/shared/clock/clock-armv7m.c
@@ -90,7 +90,7 @@ static void _ARMV7M_Clock_initialize_early(void)
interval = (uint32_t) ((freq * us_per_tick) / 1000000);
- systick->rvr = interval;
+ systick->rvr = interval - 1;
systick->cvr = 0;
systick->csr = ARMV7M_SYSTICK_CSR_ENABLE | ARMV7M_SYSTICK_CSR_CLKSOURCE;
}
More information about the vc
mailing list