XFusion API
v1.3.0
载入中...
搜索中...
未找到
examples/osal/timer/main/xf_main.c
xf_osal 定时器示例。
1
17
/* ==================== [Includes] ========================================== */
18
19
#include "xf_hal.h"
20
#include "xf_osal.h"
21
22
/* ==================== [Defines] =========================================== */
23
24
#define TAG "main"
25
26
#define XF_OSAL_CHECK(x) if (x != XF_OK)\
27
{\
28
XF_LOGE(TAG, "xf check error: %d", x);\
29
return;\
30
}
31
32
/* ==================== [Typedefs] ========================================== */
33
34
/* ==================== [Static Prototypes] ================================= */
35
36
void
timer1
(
void
*argument);
37
void
timer2
(
void
*argument);
38
39
/* ==================== [Static Variables] ================================== */
40
41
static
xf_osal_timer_t
timer
= NULL;
42
43
/* ==================== [Macros] ============================================ */
44
45
/* ==================== [Global Functions] ================================== */
46
47
void
xf_main
(
void
)
48
{
49
xf_osal_timer_attr_t
attr1 = {
50
.
name
=
"timer1"
,
51
};
52
xf_osal_timer_attr_t
attr2 = {
53
.
name
=
"timer2"
,
54
};
55
timer
=
xf_osal_timer_create
(
timer1
,
XF_OSAL_TIMER_PERIODIC
, NULL, &attr1);
56
XF_LOGI
(
TAG
,
"timer: %p"
,
timer
);
57
if
(
timer
== NULL) {
58
XF_LOGE
(
TAG
,
"xf check error: %d"
,
timer
);
59
return
;
60
}
61
xf_osal_timer_t
timer_2 =
xf_osal_timer_create
(
timer2
,
XF_OSAL_TIMER_PERIODIC
, NULL, &attr2);
62
if
(timer_2 == NULL) {
63
XF_LOGE
(
TAG
,
"xf check error: %d"
, timer_2);
64
return
;
65
}
66
const
char
*name =
xf_osal_timer_get_name
(
timer
);
67
XF_LOGI
(
TAG
,
"timer name: %s"
, name);
68
name =
xf_osal_timer_get_name
(timer_2);
69
XF_LOGI
(
TAG
,
"timer name: %s"
, name);
70
XF_OSAL_CHECK
(
xf_osal_timer_start
(
timer
, 1000U));
71
XF_OSAL_CHECK
(
xf_osal_timer_start
(timer_2, 300U));
72
}
73
74
/* ==================== [Static Functions] ================================== */
75
76
void
timer1
(
void
*argument)
77
{
78
static
uint32_t count = 0;
79
count++;
80
XF_LOGI
(
TAG
,
"timer1 count: %ld"
, count);
81
}
82
83
void
timer2
(
void
*argument)
84
{
85
static
uint32_t count = 0;
86
count++;
87
XF_LOGI
(
TAG
,
"timer2 count: %ld"
, count);
88
if
(count % 10 == 0 && count < 40) {
89
if
(
xf_osal_timer_is_running
(
timer
) == 1) {
90
xf_osal_timer_stop
(
timer
);
91
}
else
{
92
xf_osal_timer_start
(
timer
, 1000U);
93
}
94
}
95
if
(count == 40) {
96
xf_osal_timer_delete
(
timer
);
97
}
98
}
xf_main
void xf_main(void)
Definition
xf_main.c:28
xf_osal_timer_delete
xf_err_t xf_osal_timer_delete(xf_osal_timer_t timer)
删除定时器。
xf_osal_timer_start
xf_err_t xf_osal_timer_start(xf_osal_timer_t timer, uint32_t ticks)
启动或重新启动定时器。
xf_osal_timer_t
void * xf_osal_timer_t
定时器句柄。
Definition
xf_osal_timer.h:49
xf_osal_timer_create
xf_osal_timer_t xf_osal_timer_create(xf_osal_timer_func_t func, xf_osal_timer_type_t type, void *argument, xf_osal_timer_attr_t *attr)
创建并初始化定时器。
xf_osal_timer_is_running
uint32_t xf_osal_timer_is_running(xf_osal_timer_t timer)
检查定时器是否正在运行。
xf_osal_timer_stop
xf_err_t xf_osal_timer_stop(xf_osal_timer_t timer)
停止定时器。
xf_osal_timer_get_name
const char * xf_osal_timer_get_name(xf_osal_timer_t timer)
获取定时器的名称。
XF_OSAL_TIMER_PERIODIC
@ XF_OSAL_TIMER_PERIODIC
Definition
xf_osal_timer.h:43
TAG
#define TAG
Definition
xf_main.c:24
XF_OSAL_CHECK
#define XF_OSAL_CHECK(x)
Definition
xf_main.c:26
timer1
void timer1(void *argument)
Definition
xf_main.c:76
timer
static xf_osal_timer_t timer
Definition
xf_main.c:41
timer2
void timer2(void *argument)
Definition
xf_main.c:83
_xf_osal_timer_attr_t
定时器的属性结构。
Definition
xf_osal_timer.h:54
_xf_osal_timer_attr_t::name
const char * name
Definition
xf_osal_timer.h:55
XF_LOGI
#define XF_LOGI(tag, format,...)
Definition
xf_log_uitls.h:44
XF_LOGE
#define XF_LOGE(tag, format,...)
Definition
xf_log_uitls.h:32
生成于 2025年 一月 21日 星期二 17:25:08 , 为 XFusion API使用
1.9.8