Int main()
{
/*code block 1 -- begin*/
Task_Handle usbtask;
Task_Handle revtask;
Task_Handle tmxtask;
/*code block 1 -- end*/
Error_Block eb;
System_printf("enter main()\n");
Error_init(&eb);
/*code block 2 -- begin*/
usbtask = Task_create(usbTaskFxn, NULL, &eb);
revtask = Task_create(revTaskFxn, NULL, &eb);
tmxtask = Task_create(tmxTaskFxn, NULL, &eb);
/*code block 2 -- end*/
if (usbtask == NULL||revtask == NULL||tmxtask == NULL) {
System_printf("Task_create() faileds!\n");
BIOS_exit(0);
}
Task_Stat statbuf; /* declare buffer */
Task_stat(Task_self(), &statbuf); /* call func to get status */
if (statbuf.used > (statbuf.stackSize * 9 / 10)) {
System_printf("Over 90% of task's stack is in use.\n");
}
BIOS_start(); /* does not return */
return(0);
}
以上是main函数部分, 里面标记的code1和code2是动态创建
var task0Params = new Task.Params();
task0Params.instance.name = "usbtask";
task0Params.stackSize = 20480;
Program.global.usbtask = Task.create("&usbTaskFxn", task0Params);
var task1Params = new Task.Params();
task1Params.instance.name = "revtask";
task1Params.stackSize = 10240;
Program.global.revtask = Task.create("&revTaskFxn", task1Params);
var task2Params = new Task.Params();
task2Params.instance.name = "tmxtask";
task2Params.stackSize = 10240;
Program.global.tmxtask = Task.create("&tmxTaskFxn", task2Params);
以上是cfg设置task部分
#1 把code1和code2注释掉,if判断是否创建成功那里是会报错的,所以静态创建是在BIOS_start()后才开始的?
#2 如果两种如果同时存在会冲突吗?
#3 那静态创建如何判断创建成功呢?能把if写在cfg中吗?还是写在idle task里?