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