[PATCH] updated HAL_GetTick function
Gedare Bloom
gedare at rtems.org
Mon Apr 19 16:41:23 UTC 2021
On Mon, Apr 19, 2021 at 2:51 AM Robin Müller <robin.mueller.m at gmail.com> wrote:
>
> From 88ac5780f5597a8bb3bf68c6b37fe6694956faaf Mon Sep 17 00:00:00 2001
> From: Robin Mueller <robin.mueller.m at gmail.com>
> Date: Mon, 19 Apr 2021 10:39:55 +0200
> Subject: [PATCH] updated HAL_GetTick function
>
> Patch text went missing, here is the full version of the patch.
> Provides implementation for HAL_GetTick but uses RTEMS.
> Accounts for the tick base not being 1ms now
> ---
> bsps/arm/stm32h7/start/bspstart.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/bsps/arm/stm32h7/start/bspstart.c b/bsps/arm/stm32h7/start/bspstart.c
> index 2fc8133cca..e6e995a50c 100644
> --- a/bsps/arm/stm32h7/start/bspstart.c
> +++ b/bsps/arm/stm32h7/start/bspstart.c
> @@ -32,9 +32,10 @@
>
> #include <stm32h7xx_hal.h>
>
> +/* Get number of milliseconds elapsed since startup */
> uint32_t HAL_GetTick(void)
> {
> - return 0;
> + return (rtems_clock_get_ticks_since_boot() * 1000) / rtems_clock_get_ticks_per_second();
This is reasonable, but note that:
1. usually it is better to divide before multiplying, to reduce the
chance of arithmetic overflows.
2. the ticks_since_boot is 32-bits, with 1000 Hz ticking it overflows
in ~2 months
I suggest you consider
return rtems_clock_get_uptime_seconds()*1000;
Or you can use rtems_clock_get_uptime_nanoseconds() / (10000000) if ms
precision is needed.
> }
>
> uint32_t stm32h7_systick_frequency(void)
> --
> 2.29.2.windows.2
>
> On Mon, 19 Apr 2021 at 10:48, Robin Mueller <robin.mueller.m at gmail.com> wrote:
>>
>> diff --git a/bsps/arm/stm32h7/start/bspstart.c b/bsps/arm/stm32h7/start/bspstart.c
>> index 2fc8133cca..e6e995a50c 100644
>> --- a/bsps/arm/stm32h7/start/bspstart.c
>> +++ b/bsps/arm/stm32h7/start/bspstart.c
>> @@ -32,9 +32,10 @@
>>
>> #include <stm32h7xx_hal.h>
>>
>> +/* Get number of milliseconds elapsed since startup */
>> uint32_t HAL_GetTick(void)
>> {
>> - return 0;
>> + return (rtems_clock_get_ticks_since_boot() * 1000) / rtems_clock_get_ticks_per_second();
>> }
>>
>> uint32_t stm32h7_systick_frequency(void)
>> --
>> 2.29.2.windows.2
>>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list