blob: c946f4d03634098efa201863d8b0acee16b6e2a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
/**
*****************************************************************************************
* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved.
************************************************************************************************************
* @file platform_utils.h
* @brief utility helper function for user application
* @author lory_xu
* @date 2017-02
* @version v1.0
***************************************************************************************
* @attention
* <h2><center>© COPYRIGHT 2017 Realtek Semiconductor Corporation</center></h2>
***************************************************************************************
*/
#ifndef _PLATFORM_UTILS_H_
#define _PLATFORM_UTILS_H_
#ifdef __cplusplus
extern "C" {
#endif
/*============================================================================*
* Header Files
*============================================================================*/
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include "rtl876x.h"
/** @defgroup PLATFORM_UTILS Platform Utilities
* @brief Utility helper functions
* @{
*/
#if (PLATFORM_SUPPORT_CLOCK_MANAGER == 1)
#include "clock_manager.h"
#else
#define CLOCK_100MHZ 100000000
#define CLOCK_90MHZ 90000000
#define CLOCK_40MHZ 40000000
#define CLOCK_53MHZ 53333333
#define CLOCK_80MHZ 80000000
#define CLOCK_20MHZ 20000000
#define CLOCK_10MHZ 10000000
#define CLOCK_5MHZ 5000000
#define CLOCK_2P5MHZ 2500000
#define CLOCK_1P25MHZ 1250000
#define CLOCK_625KHZ 625000
#endif
/*============================================================================*
* Functions
*============================================================================*/
/** @defgroup PLATFORM_UTILS_Exported_Functions Platform Utilities Exported Functions
* @brief
* @{
*/
/**
* @brief Generate random number given max number allowed
* @param max to specify max number that allowed
* @return random number
*/
extern uint32_t platform_random(uint32_t max);
/**
* @brief Busy delay for specified millisecond
* @param t to specify t milliseconds to delay
* @return none
*/
extern volatile void (*platform_delay_ms)(uint32_t t);
/**
* @brief Busy delay for specified micro second
* @param t to specify t micro seconds to delay
* @return none
*/
extern volatile void (*platform_delay_us)(uint32_t t);
/**
* @brief Get the vendor timer tick
* @param none
* @return none
* @note Features of the vendor timer:
* (1) clock rate is 40M
* (2) width is 26 bits (max 0x3FFFFFF)
* (3) tick counter is incremental
*
*/
static inline uint32_t platform_vendor_tick(void)
{
return HAL_READ32(VENDOR_REG_BASE, 0x30);
}
/** @} */ /* End of group PLATFORM_UTILS_Exported_Functions */
/** @} */ /* End of group PLATFORM_UTILS */
#ifdef __cplusplus
}
#endif
#endif
|