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
30static void task1(void *argument);
31static void task2(void *argument);
32
33/* ==================== [Static Variables] ================================== */
34
35xf_osal_event_t event = NULL;
36
37/* ==================== [Macros] ============================================ */
38
39/* ==================== [Global Functions] ================================== */
40
41void 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",
51 .stack_size = 1024 * 2,
52 };
53 xf_osal_event_attr_t event_attr = {
54 .name = "event",
55 };
56
58 if (thread1 == NULL) {
59 XF_LOGE(TAG, "xf thread1 create error");
60 return;
61 }
62
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
90static 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) {
98 XF_LOGI(TAG, "task1 running");
99 xf_osal_delay_ms(1000);
100 }
101 }
102}
103
104static void task2(void *argument)
105{
106 XF_LOGI(TAG, "task2");
107 while (1) {
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);
114 xf_osal_delay_ms(1000);
115 } else {
116 XF_LOGE(TAG, "task2 error, %d", err);
117 }
118 }
119}
void xf_main(void)
Definition xf_main.c:28
xf_err_t xf_osal_event_delete(xf_osal_event_t event)
删除事件标志对象。
xf_err_t xf_osal_event_wait(xf_osal_event_t event, uint32_t flags, uint32_t options, uint32_t timeout)
等待一个或多个事件标志发出信号。
uint32_t xf_osal_event_get(xf_osal_event_t event)
获取当前事件标志。
xf_err_t xf_osal_event_clear(xf_osal_event_t event, uint32_t flags)
清除指定的事件标志。
xf_err_t xf_osal_event_set(xf_osal_event_t event, uint32_t flags)
设置指定的事件标志。
xf_osal_event_t xf_osal_event_create(const xf_osal_event_attr_t *attr)
创建并初始化事件标志对象。
void * xf_osal_event_t
事件句柄。
xf_osal_thread_t xf_osal_thread_create(xf_osal_thread_func_t func, void *argument, const xf_osal_thread_attr_t *attr)
创建一个线程并将其添加到活动线程中。
void * xf_osal_thread_t
线程句柄。
xf_err_t xf_osal_delay_ms(uint32_t ms)
(睡眠)等待超时,以 ms 为单位。
@ XF_OSAL_PRIORITY_NORMOL
@ XF_OSAL_PRIORITY_ABOVE_NORMAL
#define XF_OSAL_NO_CLEAR
Definition xf_osal_def.h:37
#define XF_OSAL_WAIT_ALL
Definition xf_osal_def.h:36
#define XF_OSAL_WAIT_FOREVER
Definition xf_osal_def.h:30
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
@ XF_OK
Definition xf_err.h:43
static void task2(void *argument)
Definition xf_main.c:104
xf_osal_event_t event
Definition xf_main.c:35
#define TAG
Definition xf_main.c:24
static xf_osal_thread_t thread1
Definition xf_main.c:35
static xf_osal_thread_t thread2
Definition xf_main.c:36
事件标志的属性结构。
线程的属性结构。
static xf_task_t * task1
Definition xf_main.c:34
#define XF_LOGI(tag, format,...)
#define XF_LOGE(tag, format,...)