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
|
#include <zephyr/kernel.h>
#define STACK_SIZE 1024
#define THREAD_PRIORITY 5
K_THREAD_STACK_DEFINE(my_stack_area, STACK_SIZE);
struct k_thread my_thread_data;
void my_thread_entry(void *p1, void *p2, void *p3)
{
printk("线程启动,参数: %d\n", (int)p1);
while (1) {
printk("线程运行中...\n");
k_sleep(K_SECONDS(1));
}
}
void create_thread_example(void)
{
k_tid_t my_tid = k_thread_create(
&my_thread_data, // 线程控制块
my_stack_area, // 线程栈
K_THREAD_STACK_SIZEOF(my_stack_area), // 栈大小
my_thread_entry, // 线程入口函数
(void *)42, NULL, NULL, // 传递给线程的参数
THREAD_PRIORITY, // 优先级
0, // 选项(0 表示默认)
K_NO_WAIT // 启动延迟(立即启动)
);
printk("线程创建成功,TID: %p\n", my_tid);
}
// 静态创建
#include <zephyr/kernel.h>
void static_thread_entry(void *p1, void *p2, void *p3)
{
printk("静态线程启动\n");
while (1) {
printk("静态线程运行中...\n");
k_sleep(K_SECONDS(2));
}
}
// 在编译时定义线程,系统启动时自动创建
K_THREAD_DEFINE(
static_thread_id, // 线程 ID(变量名)
1024, // 栈大小
static_thread_entry, // 入口函数
NULL, NULL, NULL, // 参数
7, // 优先级
0, // 选项
0 // 启动延迟(0 表示立即启动)
);
|