简述
w600 集成了cotrx-m3的内核,内置的操作系统为Free rtos系统。
当然了对于新入坑的小伙伴来讲 Free rtos的操作系统不太熟悉,而且官方的sdk 以及里面的历程和API手册都不太好看,所以本着学习记录分享的态度,记录一下自己学习历程。
值得注意的一点是: 很多厂家的soc芯片,对于操作系统都做了不同程度的封装,不少API看起来挺奇怪的,在API手册也很难理解的情况下,用起来就很难受了,希望大家自己多看看SDK中的例程多揣摩揣摩。
tls_os_task_create()函数说明
tls_os_task_create(
tls_os_task_t * task, 任务句柄
const char * name, 命名的任务名
void(*)(void *param) entry, 任务函数
void * param, 传递的参数
u8 * stk_start, 任务栈起始地址
u32 stk_size, 任务栈大小
u32 prio, 任务优先级
u32 flag 附加的任务行为信息
参考实例
#define TASK_STK_SIZE 800 //设置任务栈的大小
static u32 TASK1_task_stk[TASK_STK_SIZE]; //设置任务栈的起始地址
tls_os_task_t Task1_HandHdle; //创建任务句柄
static u32 TASK2_task_stk[TASK_STK_SIZE]; //设置任务栈的起始地址
tls_os_task_t Task2_HandHdle; //创建任务句柄
void Task1_lvx_test(void * num)
{
for(;;)
{
tls_os_time_delay(HZ); //延时1S
printf("\r\n Task1 : ---%s \r\n", (char *)num);
}
}
void Task2_lvx_test(void * num)
{
for(;;)
{
tls_os_time_delay(HZ); //延时1S
printf(" Task2 : ---The time was %d \r\n", (int *)num);
}
}
void UserMain()
{
//注意 User_main()函数是用户所在的初始化函数,系统的初始化在platform/sys/wm_main.c 的main()函数下;
//WM_MAIN.C下的code,请谨慎修改
char * param1 = "Things Turn welcome you!";
int param2 = 20181102;
tls_os_task_create(Task1_HandHdle,
"Task1_lvx_test",
Task1_lvx_test,
(void *)param1,
(void *)&TASK1_task_stk,
TASK_STK_SIZE,
4,
0);
tls_os_task_create(Task1_HandHdle,
"Task2_lvx_test",
Task2_lvx_test,
(void *)param2,
(void *)&TASK2_task_stk,
TASK_STK_SIZE,
5,
0);
for(;;)
{
tls_os_time_delay(HZ);
}
}
输出结果
Task1 : —Things Turn welcome you!
Task2 : —The time was 20181102
Task1 : —Things Turn welcome you!
Task2 : —The time was 20181102
Task1 : —Things Turn welcome you!
Task2 : —The time was 20181102
结束
W600技术交流群 : 860320067
W600 线上教程:http://docs.thingsturn.com
样品和开发板购买:https://shop387867913.taobao.com
Github开源资料:https://github.com/w600
了解更多内容,可访问官网:http://www.thingsturn.com
转载自原文链接, 如需删除请联系管理员。
原文链接:W600入门篇 ------ 一、任务创建,转载请注明来源!