我一般用VC或者UE编辑,用Tornado编译,就没遇到你说的这些问题。 任务就是一个子程序,你创建任务的话,在运行时会并发执行,静态表现和子程序没区别。 你在printf之后加taskDelay延时即可。
************************************* * VxWorks for LPC2210应用编程实战节选 * ************************************* ------ 《ecos增值包》选配之VxWorks应用编程实战 2007/04/22 asdjf@163.com www.armecos.com
VxWorks和ecos一样,都是多任务操作系统,都用GNU工具链开发,只是API函数名略有不同,因此,我们分别用ecos中介绍过的两个demo程序对照讲解VxWorks应用编程的开发方法。
#define STACK_SIZE 2000
void taska(int arg); void taskb(int arg); void taskc(int arg);
void demo1(void) { printf("Demo1 Start......
"); taskSpawn("taska", 90, 0, STACK_SIZE, taska, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); taskSpawn("taskb", 90, 0, STACK_SIZE, taskb, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0); taskSpawn("taskc", 90, 0, STACK_SIZE, taskc, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0); }
void taska(int arg) { for(;;) { printf(" AAAAAA111111 is active.thread data is %d.
", arg); taskDelay(100); } }
void taskb(int arg) { for(;;) { printf(" BBBBBB333333 is active.thread data is %d.
", arg); taskDelay(300); } }
void taskc(int arg) { for(;;) { printf(" CCCCCC666666 is active.thread data is %d.
", arg); taskDelay(600); } }
由上可见,VxWorks中创建任务使用taskSpawn,延时使用taskDelay。下表对比了创建任务和任务延时在ucos51、ecos、VxWorks中的名称。 ------------------------------------------------------ | | 创建任务 | 任务延时 | ------------------------------------------------------ | ucos51 | OSTaskCreate | OSTimeDly | ------------------------------------------------------ | ecos | cyg_thread_create | cyg_thread_delay | ------------------------------------------------------ | VxWorks | taskSpawn | taskDelay | ------------------------------------------------------
上述文档可能不完整或已被更新,想获得该资料的最新最全版本,请访问:www.armecos.com
更多内容,详见: 我的培训中心 我的研发团队 我的技术顾问 文件系统整体解决方案咨询套餐 IP协议栈整体解决方案咨询套餐 USB整体解决方案咨询套餐 BootLoader整体解决方案咨询套餐 |