XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_sys_time.c
浏览该文件的文档.
1
12/* ==================== [Includes] ========================================== */
13
14#include "xf_sys_time.h"
15
16/* ==================== [Defines] =========================================== */
17
18/* ==================== [Typedefs] ========================================== */
19
20/* ==================== [Static Prototypes] ================================= */
21
22/* ==================== [Static Variables] ================================== */
23
24static xf_us_t (*s_get_us)(void) = NULL;
25
26/* ==================== [Macros] ============================================ */
27
28/* ==================== [Global Functions] ================================== */
29
31{
32 if (unlikely(get_us == NULL)) {
33 return XF_ERR_INVALID_ARG;
34 }
35 s_get_us = get_us;
36
37 return XF_OK;
38}
39
41{
42 if (unlikely(s_get_us == NULL)) {
44 }
45 if (unlikely(n_ms == 0)) {
46 return XF_ERR_INVALID_ARG;
47 }
48
49 xf_us_t timeout_us = s_get_us();
50
51 timeout_us += n_ms * 1000;
52 while (timeout_us > s_get_us());
53
54 return XF_OK;
55}
56
58{
59 if (unlikely(s_get_us == NULL)) {
61 }
62 if (unlikely(n_us == 0)) {
63 return XF_ERR_INVALID_ARG;
64 }
65
66 xf_us_t timeout_us = s_get_us();
67
68 timeout_us += n_us;
69 while (timeout_us > s_get_us());
70
71 return XF_OK;
72}
73
75{
76 if (unlikely(s_get_us == NULL)) {
78 }
79 if (unlikely(n_us <= s_get_us())) {
80 return XF_ERR_INVALID_ARG;
81 }
82
83 while (n_us > s_get_us());
84
85 return XF_OK;
86}
87
89{
90 if (unlikely(s_get_us == NULL)) {
91 return 0;
92 }
93 return s_get_us() / 1000 / 1000;
94}
95
97{
98 if (unlikely(s_get_us == NULL)) {
99 return 0;
100 }
101 return s_get_us() / 1000;
102}
103
105{
106 if (unlikely(s_get_us == NULL)) {
107 return 0;
108 }
109 return s_get_us();
110}
111
112/* ==================== [Static Functions] ================================== */
xf_us_t xf_sys_time_get_us(void)
获取系统时间的时间戳,单位微秒(us)
xf_err_t xf_sys_time_init(xf_us_t(*get_us)(void))
Definition xf_sys_time.c:30
xf_ms_t xf_sys_time_get_ms(void)
获取系统时间的时间戳,单位毫秒(ms)
Definition xf_sys_time.c:96
xf_err_t xf_delay_ms(xf_ms_t n_ms)
毫秒级延时
Definition xf_sys_time.c:40
xf_err_t xf_delay_us(xf_us_t n_us)
微秒级延时
Definition xf_sys_time.c:57
xf_s_t xf_sys_time_get_s(void)
获取系统时间的时间戳,单位秒(s)
Definition xf_sys_time.c:88
xf_err_t xf_delay_until(xf_us_t n_us)
延时到一个绝对的 us 级时间戳
Definition xf_sys_time.c:74
#define unlikely(x)
分支预测,优化条件为 假 的可能性更大的情况。
Definition xf_attr.h:113
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
@ XF_ERR_INVALID_PORT
Definition xf_err.h:49
@ XF_ERR_INVALID_ARG
Definition xf_err.h:46
@ XF_OK
Definition xf_err.h:43
XF_S_TYPE xf_s_t
XF_US_TYPE xf_us_t
XF_MS_TYPE xf_ms_t
static xf_us_t(* s_get_us)(void)
Definition xf_sys_time.c:24
时间戳及精确延迟。