From 3ef44bff54e6f5e94b89bbd8afb5243075b668a0 Mon Sep 17 00:00:00 2001 From: Felix Ruess Date: Tue, 19 Feb 2013 19:22:49 +0100 Subject: [PATCH] [cm3] fix doxygen for systick_get_value, add systick_get_reload Fix the reload value in the examples: to get a SysTick interrupt every N clock pulses: set reload to N-1 see http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/BGBEEJHC.html#BABGACGG --- examples/stm32/f1/lisa-m-1/can/can.c | 3 ++- examples/stm32/f1/lisa-m-1/usb_hid/usbhid.c | 3 ++- examples/stm32/f1/lisa-m-2/can/can.c | 3 ++- .../f1/lisa-m-2/usart_irq_printf/usart_irq_printf.c | 3 ++- examples/stm32/f1/obldc-strip/can/can.c | 3 ++- examples/stm32/f1/obldc-strip/systick/systick.c | 3 ++- examples/stm32/f1/obldc/can/can.c | 3 ++- examples/stm32/f1/obldc/systick/systick.c | 3 ++- examples/stm32/f1/other/systick/systick.c | 3 ++- examples/stm32/f1/other/usb_hid/usbhid.c | 3 ++- .../stm32-h103/usart_irq_printf/usart_irq_printf.c | 3 ++- examples/stm32/f1/stm32-h103/usb_hid/usbhid.c | 3 ++- lib/cm3/systick.c | 13 ++++++++++++- 13 files changed, 36 insertions(+), 13 deletions(-) diff --git a/examples/stm32/f1/lisa-m-1/can/can.c b/examples/stm32/f1/lisa-m-1/can/can.c index 463d7fcd..c5a1f128 100644 --- a/examples/stm32/f1/lisa-m-1/can/can.c +++ b/examples/stm32/f1/lisa-m-1/can/can.c @@ -91,7 +91,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/lisa-m-1/usb_hid/usbhid.c b/examples/stm32/f1/lisa-m-1/usb_hid/usbhid.c index e77ade08..266b0dab 100644 --- a/examples/stm32/f1/lisa-m-1/usb_hid/usbhid.c +++ b/examples/stm32/f1/lisa-m-1/usb_hid/usbhid.c @@ -241,7 +241,8 @@ static void hid_set_config(usbd_device *usbd_dev, u16 wValue) #endif systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); - systick_set_reload(100000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(99999); systick_interrupt_enable(); systick_counter_enable(); } diff --git a/examples/stm32/f1/lisa-m-2/can/can.c b/examples/stm32/f1/lisa-m-2/can/can.c index 3ca01cfe..01d65c31 100644 --- a/examples/stm32/f1/lisa-m-2/can/can.c +++ b/examples/stm32/f1/lisa-m-2/can/can.c @@ -91,7 +91,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/lisa-m-2/usart_irq_printf/usart_irq_printf.c b/examples/stm32/f1/lisa-m-2/usart_irq_printf/usart_irq_printf.c index dd2e2217..7c53b8dd 100644 --- a/examples/stm32/f1/lisa-m-2/usart_irq_printf/usart_irq_printf.c +++ b/examples/stm32/f1/lisa-m-2/usart_irq_printf/usart_irq_printf.c @@ -223,7 +223,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/obldc-strip/can/can.c b/examples/stm32/f1/obldc-strip/can/can.c index a64bab54..b2954860 100644 --- a/examples/stm32/f1/obldc-strip/can/can.c +++ b/examples/stm32/f1/obldc-strip/can/can.c @@ -75,7 +75,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 8000000/8000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(8000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(7999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/obldc-strip/systick/systick.c b/examples/stm32/f1/obldc-strip/systick/systick.c index 8b949013..6a946a6d 100644 --- a/examples/stm32/f1/obldc-strip/systick/systick.c +++ b/examples/stm32/f1/obldc-strip/systick/systick.c @@ -68,7 +68,8 @@ int main(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 8000000/8000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(8000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(7999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/obldc/can/can.c b/examples/stm32/f1/obldc/can/can.c index 16643a3f..1d344417 100644 --- a/examples/stm32/f1/obldc/can/can.c +++ b/examples/stm32/f1/obldc/can/can.c @@ -79,7 +79,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/obldc/systick/systick.c b/examples/stm32/f1/obldc/systick/systick.c index 14267934..4c293d4c 100644 --- a/examples/stm32/f1/obldc/systick/systick.c +++ b/examples/stm32/f1/obldc/systick/systick.c @@ -77,7 +77,8 @@ int main(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/other/systick/systick.c b/examples/stm32/f1/other/systick/systick.c index c04704d0..d9f976ac 100644 --- a/examples/stm32/f1/other/systick/systick.c +++ b/examples/stm32/f1/other/systick/systick.c @@ -62,7 +62,8 @@ int main(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/other/usb_hid/usbhid.c b/examples/stm32/f1/other/usb_hid/usbhid.c index a3b78d5a..f976c882 100644 --- a/examples/stm32/f1/other/usb_hid/usbhid.c +++ b/examples/stm32/f1/other/usb_hid/usbhid.c @@ -238,7 +238,8 @@ static void hid_set_config(usbd_device *usbd_dev, u16 wValue) #endif systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); - systick_set_reload(100000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(99999); systick_interrupt_enable(); systick_counter_enable(); } diff --git a/examples/stm32/f1/stm32-h103/usart_irq_printf/usart_irq_printf.c b/examples/stm32/f1/stm32-h103/usart_irq_printf/usart_irq_printf.c index b052dc3f..c61349ce 100644 --- a/examples/stm32/f1/stm32-h103/usart_irq_printf/usart_irq_printf.c +++ b/examples/stm32/f1/stm32-h103/usart_irq_printf/usart_irq_printf.c @@ -222,7 +222,8 @@ void systick_setup(void) systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */ - systick_set_reload(9000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(8999); systick_interrupt_enable(); diff --git a/examples/stm32/f1/stm32-h103/usb_hid/usbhid.c b/examples/stm32/f1/stm32-h103/usb_hid/usbhid.c index 20730967..eff800e9 100644 --- a/examples/stm32/f1/stm32-h103/usb_hid/usbhid.c +++ b/examples/stm32/f1/stm32-h103/usb_hid/usbhid.c @@ -236,7 +236,8 @@ static void hid_set_config(usbd_device *usbd_dev, u16 wValue) #endif systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); - systick_set_reload(100000); + /* SysTick interrupt every N clock pulses: set reload to N-1 */ + systick_set_reload(99999); systick_interrupt_enable(); systick_counter_enable(); } diff --git a/lib/cm3/systick.c b/lib/cm3/systick.c index 325ffff4..874261b5 100644 --- a/lib/cm3/systick.c +++ b/lib/cm3/systick.c @@ -60,9 +60,20 @@ void systick_set_reload(u32 value) @returns 24 bit reload value as u32. */ +u32 systick_get_reload(void) +{ + return (STK_LOAD & 0x00FFFFFF); +} + +/*-----------------------------------------------------------------------------*/ +/** @brief Get the current SysTick counter value. + +@returns 24 bit current value as u32. +*/ + u32 systick_get_value(void) { - return STK_VAL; + return (STK_VAL & 0x00FFFFFF); } /*-----------------------------------------------------------------------------*/