任务创建
## 任务创建
- 函数接口介绍
```language
//TaskFunc_t -> typedef void(* TaskFunc_t) (void *)
UINT32 xy_TaskCreate(
TaskFunc_t task_entry,
char *name,
int StackSize,
void *pvParameters,
int Priority,
void *TCB_hanndler
)
```
## 参数说明:
|参数|功能说明|
|-|-|-|
|task_entry|任务执行函数的指针|
|name |任务名字|
|StackSize |任务栈大小|
|pvParameters|任务参数,如果没有入参可设置为null|
|Priority |任务优先级,默认10|
|TCB_hanndler |任务句柄|
## 返回值
|值|说明|
|-|-|-|
|0x02000207 |任务句柄为null|
|0x02000201 |任务初始化参数为null|
|0x02000205 |任务名字为null|
|0x02000205 |任务执行函数的指针|
|0x02000203 |不正确的任务优先级|
|0x02000220 |任务栈大小太大|
|0x02000206 |任务栈大小太小|
|0x02000211 |没有可用的空闲任务控制块|
|0x03000200 |任务创建内存不足|
|0 |任务创建成功|
## 示例
```language
int g_user_task_Handle;
//用户任务代码
static void* user_task_demo(void *args)
{
while(1)
{
xy_sleep(10);
}
}
//用户编写的任务创建代码demo
void user_task_init()
{
xy_TaskCreate((TaskFunc_t)user_task_demo,"user_task_demo",0x800,NULL,10,&g_user_task_Handle);
}
//将创建的任务函数放入 user_app_init()
//本函数在 /userapp/Src/user_hook_func.c 文件下
void user_app_init()
{
/*
其它代码
*/
user_task_init();
}
```
## 用户开发注意事项
- 用户仅需在main.c的user_app_init()接口中,进行用户任务的初始化;在user_sys_init中,添加系统级初始化接口,GPIO重映射等。
- 任务创建代码放入 user_sys_init 函数下,任务方可执行。
- 用户二次开发只能使用userapp下头文件中的接口、宏值等,不得调用非userapp目录下的任何接口。
- 用户不得修改芯翼任何代码,如果需要参考芯翼的实例,请自行新建文件,否则SDK迭代会影响用户代码的同步。
- 开源RTOS,具体使用方法请查阅华为LiteOS开源手册