XFusion API
v1.3.0
载入中...
搜索中...
未找到
xf_main.c
浏览该文件的文档.
1
17
/* ==================== [Includes] ========================================== */
18
19
#include "xf_hal.h"
20
#include "xf_osal.h"
21
22
/* ==================== [Defines] =========================================== */
23
24
#define TAG "main"
25
26
/* ==================== [Typedefs] ========================================== */
27
28
/* ==================== [Static Prototypes] ================================= */
29
30
static
void
task1
(
void
*argument);
31
static
void
task2
(
void
*argument);
32
33
/* ==================== [Static Variables] ================================== */
34
35
xf_osal_event_t
event
= NULL;
36
37
/* ==================== [Macros] ============================================ */
38
39
/* ==================== [Global Functions] ================================== */
40
41
void
xf_main
(
void
)
42
{
43
xf_osal_thread_attr_t
attr1 = {
44
.
name
=
"task1"
,
45
.priority =
XF_OSAL_PRIORITY_NORMOL
,
46
.stack_size = 1024 * 2,
47
};
48
xf_osal_thread_attr_t
attr2 = {
49
.
name
=
"task2"
,
50
.priority =
XF_OSAL_PRIORITY_ABOVE_NORMAL
,
51
.stack_size = 1024 * 2,
52
};
53
xf_osal_event_attr_t
event_attr = {
54
.
name
=
"event"
,
55
};
56
57
xf_osal_thread_t
thread1
=
xf_osal_thread_create
(
task1
, NULL, &attr1);
58
if
(
thread1
== NULL) {
59
XF_LOGE
(
TAG
,
"xf thread1 create error"
);
60
return
;
61
}
62
63
xf_osal_thread_t
thread2
=
xf_osal_thread_create
(
task2
, NULL, &attr2);
64
if
(
thread2
== NULL) {
65
XF_LOGE
(
TAG
,
"xf thread2 create error"
);
66
return
;
67
}
68
69
event
=
xf_osal_event_create
(&event_attr);
70
if
(
event
== NULL) {
71
XF_LOGE
(
TAG
,
"xf event create error"
);
72
return
;
73
}
74
75
xf_osal_event_t
event1 =
xf_osal_event_create
(&event_attr);
76
if
(event1 == NULL) {
77
XF_LOGE
(
TAG
,
"xf event create error"
);
78
return
;
79
}
80
xf_err_t
err =
xf_osal_event_delete
(event1);
81
if
(err !=
XF_OK
) {
82
XF_LOGE
(
TAG
,
"xf event delete error"
);
83
return
;
84
}
85
86
}
87
88
/* ==================== [Static Functions] ================================== */
89
90
static
void
task1
(
void
*argument)
91
{
92
xf_err_t
err =
XF_OK
;
93
err |=
xf_osal_delay_ms
(1000);
94
err |=
xf_osal_event_set
(
event
, 0x01);
95
XF_LOGI
(
TAG
,
"task1, err:%d"
, err);
96
while
(1) {
97
if
(
xf_osal_event_wait
(
event
, 0x01,
XF_OSAL_WAIT_ALL
,
XF_OSAL_WAIT_FOREVER
) ==
XF_OK
) {
98
XF_LOGI
(
TAG
,
"task1 running"
);
99
xf_osal_delay_ms
(1000);
100
}
101
}
102
}
103
104
static
void
task2
(
void
*argument)
105
{
106
XF_LOGI
(
TAG
,
"task2"
);
107
while
(1) {
108
xf_err_t
err =
xf_osal_event_wait
(
event
, 0x01,
XF_OSAL_NO_CLEAR
,
XF_OSAL_WAIT_FOREVER
);
109
if
(err ==
XF_OK
) {
110
uint32_t event_flag =
xf_osal_event_get
(
event
);
111
XF_LOGI
(
TAG
,
"task2 running, event:%d"
, event_flag);
112
xf_osal_event_clear
(
event
, 0x01);
113
xf_osal_event_set
(
event
, 0x01);
114
xf_osal_delay_ms
(1000);
115
}
else
{
116
XF_LOGE
(
TAG
,
"task2 error, %d"
, err);
117
}
118
}
119
}
xf_main
void xf_main(void)
Definition
xf_main.c:28
xf_osal_event_delete
xf_err_t xf_osal_event_delete(xf_osal_event_t event)
删除事件标志对象。
xf_osal_event_wait
xf_err_t xf_osal_event_wait(xf_osal_event_t event, uint32_t flags, uint32_t options, uint32_t timeout)
等待一个或多个事件标志发出信号。
xf_osal_event_get
uint32_t xf_osal_event_get(xf_osal_event_t event)
获取当前事件标志。
xf_osal_event_clear
xf_err_t xf_osal_event_clear(xf_osal_event_t event, uint32_t flags)
清除指定的事件标志。
xf_osal_event_set
xf_err_t xf_osal_event_set(xf_osal_event_t event, uint32_t flags)
设置指定的事件标志。
xf_osal_event_create
xf_osal_event_t xf_osal_event_create(const xf_osal_event_attr_t *attr)
创建并初始化事件标志对象。
xf_osal_event_t
void * xf_osal_event_t
事件句柄。
Definition
xf_osal_event.h:67
xf_osal_thread_create
xf_osal_thread_t xf_osal_thread_create(xf_osal_thread_func_t func, void *argument, const xf_osal_thread_attr_t *attr)
创建一个线程并将其添加到活动线程中。
xf_osal_thread_t
void * xf_osal_thread_t
线程句柄。
Definition
xf_osal_thread.h:159
xf_osal_delay_ms
xf_err_t xf_osal_delay_ms(uint32_t ms)
(睡眠)等待超时,以 ms 为单位。
XF_OSAL_PRIORITY_NORMOL
@ XF_OSAL_PRIORITY_NORMOL
Definition
xf_osal_thread.h:95
XF_OSAL_PRIORITY_ABOVE_NORMAL
@ XF_OSAL_PRIORITY_ABOVE_NORMAL
Definition
xf_osal_thread.h:103
XF_OSAL_NO_CLEAR
#define XF_OSAL_NO_CLEAR
Definition
xf_osal_def.h:37
XF_OSAL_WAIT_ALL
#define XF_OSAL_WAIT_ALL
Definition
xf_osal_def.h:36
XF_OSAL_WAIT_FOREVER
#define XF_OSAL_WAIT_FOREVER
Definition
xf_osal_def.h:30
xf_err_t
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition
xf_err.h:69
XF_OK
@ XF_OK
Definition
xf_err.h:43
task2
static void task2(void *argument)
Definition
xf_main.c:104
event
xf_osal_event_t event
Definition
xf_main.c:35
TAG
#define TAG
Definition
xf_main.c:24
thread1
static xf_osal_thread_t thread1
Definition
xf_main.c:35
thread2
static xf_osal_thread_t thread2
Definition
xf_main.c:36
_xf_osal_event_attr_t
事件标志的属性结构。
Definition
xf_osal_event.h:72
_xf_osal_event_attr_t::name
const char * name
Definition
xf_osal_event.h:73
_xf_osal_thread_attr_t
线程的属性结构。
Definition
xf_osal_thread.h:135
_xf_osal_thread_attr_t::name
const char * name
Definition
xf_osal_thread.h:136
task1
static xf_task_t * task1
Definition
xf_main.c:34
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
examples
osal
event
main
xf_main.c
生成于 2025年 一月 21日 星期二 17:25:09 , 为 XFusion API使用
1.9.8