hal_base.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /* SPDX-License-Identifier: BSD-3-Clause */
  2. /*
  3. * Copyright (c) 2020-2021 Rockchip Electronics Co., Ltd.
  4. */
  5. /** @addtogroup RK_HAL_Driver
  6. * @{
  7. */
  8. /** @addtogroup HAL_BASE
  9. * @{
  10. */
  11. #ifndef _HAL_BASE_H_
  12. #define _HAL_BASE_H_
  13. #include "hal_conf.h"
  14. #include "hal_driver.h"
  15. #include "hal_debug.h"
  16. /***************************** MACRO Definition ******************************/
  17. /** @defgroup HAL_BASE_Exported_Definition_Group1 Basic Definition
  18. * @{
  19. */
  20. /** enter markrom usb upgrade */
  21. #define SYS_UPGRADE_FLAG (0xEF08A53C)
  22. #define IS_TICKFREQ(f) (((f) == HAL_TICK_FREQ_1KHZ) || ((f) == HAL_TICK_FREQ_100HZ) || ((f) == HAL_TICK_FREQ_10HZ))
  23. /***************************** Structure Definition **************************/
  24. typedef enum {
  25. HAL_TICK_FREQ_10HZ = 100U, /**< 10 ticks per second, so it's 100ms/tick */
  26. HAL_TICK_FREQ_100HZ = 10U, /**< 100 ticks per second, so it's 10ms/tick */
  27. HAL_TICK_FREQ_1KHZ = 1U, /**< 1000 ticks per second, so it's 1ms/tick */
  28. HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ
  29. } eHAL_tickFreq;
  30. /** @} */
  31. /***************************** Function Declare ******************************/
  32. /** @defgroup HAL_BASE_Public_Function_Declare Public Function Declare
  33. * @{
  34. */
  35. HAL_Status HAL_Init(void);
  36. HAL_Status HAL_DeInit(void);
  37. HAL_Status HAL_InitTick(uint32_t tickPriority);
  38. HAL_Status HAL_IncTick(void);
  39. uint32_t HAL_GetTick(void);
  40. HAL_Status HAL_SetTickFreq(eHAL_tickFreq freq);
  41. eHAL_tickFreq HAL_GetTickFreq(void);
  42. HAL_Status HAL_DelayUs(uint32_t us);
  43. HAL_Status HAL_DelayMs(uint32_t ms);
  44. HAL_Status HAL_CPUDelayUs(uint32_t us);
  45. HAL_Status HAL_SystemCoreClockUpdate(uint32_t hz, eHAL_systickClkSource clkSource);
  46. uint64_t HAL_DivU64Rem(uint64_t numerator, uint32_t denominator, uint32_t *pRemainder);
  47. uint64_t HAL_GetSysTimerCount(void);
  48. /** @} */
  49. /********************* Public Function Definition ***************************/
  50. /** @defgroup HAL_BASE_Exported_Functions_Group5 Other Functions
  51. * @{
  52. */
  53. /**
  54. * @brief uint64_t numerator / uint32_t denominator
  55. * @param numerator
  56. * @param denominator
  57. * @return uint64_t result
  58. */
  59. __STATIC_INLINE uint64_t HAL_DivU64(uint64_t numerator, uint32_t denominator)
  60. {
  61. return HAL_DivU64Rem(numerator, denominator, NULL);
  62. }
  63. /**
  64. * @brief uint32_t numerator / uint32_t denominator rounded to nearest integer
  65. * @param numerator
  66. * @param denominator
  67. * @return uint32_t result rounded to nearest integer
  68. */
  69. __STATIC_INLINE uint32_t HAL_DivRoundClosest(uint32_t numerator, uint32_t denominator)
  70. {
  71. return (numerator + (denominator / 2)) / denominator;
  72. }
  73. /** @} */
  74. #endif
  75. /** @} */
  76. /** @} */