John Lee<j.y.lee@yeah.net> 20:39:38
可以,稍后会讲到。
John Lee<j.y.lee@yeah.net> 20:41:00
在普通的rtos中,创建任务由一个函数来进行,如ucos的OSCreateTask()
John Lee<j.y.lee@yeah.net> 20:42:17
create task需要几个参数:任务函数,栈地址,栈长度,优先级等等。
John Lee<j.y.lee@yeah.net> 20:42:48
栈地址空间需要预先分配
John Lee<j.y.lee@yeah.net> 20:44:06
而look为了简化这些琐事,使用了一个模板(instantiate::task)来完成所有的工作。
John Lee<j.y.lee@yeah.net> 20:44:46
这样,只需要一句,就可以完成任务实例的创建。
John Lee<j.y.lee@yeah.net> 20:45:10
instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1;
John Lee<j.y.lee@yeah.net> 20:45:26
大家不要被吓到。
John Lee<j.y.lee@yeah.net> 20:45:41
这是“定式”,照抄即可。
大侠永恒(472764312) 20:45:56
老农被吓到了..........
John Lee<j.y.lee@yeah.net> 20:47:26
这个模板的使用(创建任务)方式:
instantiate::task<用户任务类,需要的任务栈长度> 任务实例名;
John Lee<j.y.lee@yeah.net> 20:48:10
实例名,可以简单地理解为“变量名”。
John Lee<j.y.lee@yeah.net> 20:49:33
用户任务类,就是前面讲到的,从task_t派生的用户任务类,
John Lee<j.y.lee@yeah.net> 20:50:21
任务栈长度,是为这个任务分配的栈空间长度。
John Lee<j.y.lee@yeah.net> 20:51:39
任务创建就这些内容。
John Lee<j.y.lee@yeah.net> 20:51:46
Any question ?
jutyy(360600219) 20:52:23
任务栈长度,多少合适
John Lee<j.y.lee@yeah.net> 20:53:18
这个不好说,主要看任务的函数调用深度,和局部变量的多少。
John Lee<j.y.lee@yeah.net> 20:53:47
如果RAM够大,可以定义大一些。
John Lee<j.y.lee@yeah.net> 20:54:24
先跑跑,如果没有问题,再逐步减小。
lxyppc(19148022) 20:55:47
可以做个Memory Usage检查的功能出来
John Lee<j.y.lee@yeah.net> 20:55:57