diff --git a/include/rtdef.h b/include/rtdef.h index 34bb283ae71..13dca20df59 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -106,7 +106,11 @@ extern "C" { #define RT_UINT64_MAX 0xFFFFFFFFFFFFFFFFULL /**< Maximum number of UINT64 */ #endif /* RT_USING_LIBC */ +#ifdef RT_TICK_USING_64BIT +#define RT_TICK_MAX RT_UINT64_MAX /**< Maximum number of tick */ +#else #define RT_TICK_MAX RT_UINT32_MAX /**< Maximum number of tick */ +#endif /* RT_TICK_USING_64BIT */ /* maximum value of ipc type */ #define RT_SEM_VALUE_MAX RT_UINT16_MAX /**< Maximum number of semaphore .value */ diff --git a/include/rttypes.h b/include/rttypes.h index 0b614a492ae..a950c1a9403 100644 --- a/include/rttypes.h +++ b/include/rttypes.h @@ -81,9 +81,14 @@ typedef rt_ubase_t rt_intptr_t; /**< Type for signed poi typedef rt_base_t rt_uintptr_t; /**< Type for unsigned pointer length integer */ #endif /* defined(RT_USING_LIBC) && !defined(RT_USING_NANO) */ +#ifdef RT_TICK_USING_64BIT +typedef rt_uint64_t rt_tick_t; /**< Type for tick count */ +#else +typedef rt_uint32_t rt_tick_t; /**< Type for tick count */ +#endif /* RT_TICK_USING_64BIT */ + typedef rt_base_t rt_err_t; /**< Type for error number */ typedef rt_uint32_t rt_time_t; /**< Type for time stamp */ -typedef rt_uint32_t rt_tick_t; /**< Type for tick count */ typedef rt_base_t rt_flag_t; /**< Type for flags */ typedef rt_ubase_t rt_dev_t; /**< Type for device */ typedef rt_base_t rt_off_t; /**< Type for offset */ diff --git a/src/Kconfig b/src/Kconfig index 30105c3956a..3267cae14fd 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -116,6 +116,12 @@ config RT_TICK_PER_SECOND help System's tick frequency, Hz. +config RT_TICK_USING_64BIT + bool "Using 64-bit systick" + default n + help + Using long long as tick unit, this is useful when the tick frequency is very high. + config RT_USING_HOOK bool "Enable system hook" default y