diff --git a/boards/arm/stm32/omnibusf4/src/stm32_perfcount.c b/boards/arm/stm32/omnibusf4/src/stm32_perfcount.c index e6d0763bfe7..f65f73a5e8a 100644 --- a/boards/arm/stm32/omnibusf4/src/stm32_perfcount.c +++ b/boards/arm/stm32/omnibusf4/src/stm32_perfcount.c @@ -47,6 +47,15 @@ uint32_t up_perf_gettime(void) return getreg32(DWT_CYCCNT); } +/**************************************************************************** + * Name: up_perf_getfreq + ****************************************************************************/ + +uint32_t up_perf_getfreq(void) +{ + return STM32_SYSCLK_FREQUENCY; +} + /**************************************************************************** * Name: up_perf_convert ****************************************************************************/ diff --git a/boards/arm/stm32/stm32f4discovery/src/stm32_perfcount.c b/boards/arm/stm32/stm32f4discovery/src/stm32_perfcount.c index be968b593ca..f1d0c8f8b8d 100644 --- a/boards/arm/stm32/stm32f4discovery/src/stm32_perfcount.c +++ b/boards/arm/stm32/stm32f4discovery/src/stm32_perfcount.c @@ -47,6 +47,15 @@ uint32_t up_perf_gettime(void) return getreg32(DWT_CYCCNT); } +/**************************************************************************** + * Name: up_perf_getfreq + ****************************************************************************/ + +uint32_t up_perf_getfreq(void) +{ + return STM32_SYSCLK_FREQUENCY; +} + /**************************************************************************** * Name: up_perf_convert ****************************************************************************/ diff --git a/drivers/timers/arch_alarm.c b/drivers/timers/arch_alarm.c index a1a0f7284fd..4f541def9a6 100644 --- a/drivers/timers/arch_alarm.c +++ b/drivers/timers/arch_alarm.c @@ -388,6 +388,11 @@ uint32_t weak_function up_perf_gettime(void) return ret; } +uint32_t weak_function up_perf_getfreq(void) +{ + return USEC_PER_SEC; +} + void weak_function up_perf_convert(uint32_t elapsed, FAR struct timespec *ts) { timespec_from_usec(ts, elapsed); diff --git a/drivers/timers/arch_timer.c b/drivers/timers/arch_timer.c index ca28275cba0..f9efdba2e27 100644 --- a/drivers/timers/arch_timer.c +++ b/drivers/timers/arch_timer.c @@ -437,6 +437,11 @@ uint32_t weak_function up_perf_gettime(void) return ret; } +uint32_t weak_function up_perf_getfreq(void) +{ + return USEC_PER_SEC; +} + void weak_function up_perf_convert(uint32_t elapsed, FAR struct timespec *ts) { timespec_from_usec(ts, elapsed); diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h index d8c7955c3b5..8728cfa743d 100644 --- a/include/nuttx/arch.h +++ b/include/nuttx/arch.h @@ -2577,6 +2577,7 @@ void arch_sporadic_resume(FAR struct tcb_s *tcb); ****************************************************************************/ uint32_t up_perf_gettime(void); +uint32_t up_perf_getfreq(void); void up_perf_convert(uint32_t elapsed, FAR struct timespec *ts); #undef EXTERN