|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
移植UC/OS,调用OSTimeDly后不能任务调度,急!急!急! |
作者:笨蛋不笨 栏目:嵌入式系统 |
我在移植UC/OS到44b的时候,task1调用OSTimeDly后,task1就死掉了,不能进入运行状态,task2若调用OSTimeDlyResume(5),则task1才能恢复执行,搞了好几天也没有解决这个问题,不知道大家遇到过这种问题吗,下面是测试的代码。 #include "../SOURCE/includes.h" // uC/OS interface #include "../inc/44blib.h" #include "../inc/def.h" #include "../inc/44b.h" // allocate MEMORY for tasks' stacks #ifdef SEMIHOSTED #define STACKSIZE (64+SEMIHOSTED_STACK_NEEDS) #else #define STACKSIZE 256 #endif OS_STK Stack1[STACKSIZE]= {0, }; OS_STK Stack2[STACKSIZE]= {0, }; void Task1(void *Id) { while(1) { Uart_Printf("I am task1\n"); OSTimeDly(200); Uart_Printf("I am task1 too!\n"); OSTimeDly(400); } } void Task2(void *Id) { for(;;){ Led_Display(2); Delay(1000); Led_Display(4); Delay(1000); } } int Main(int argc, CHAR **argv) { CHAR Id1 = '1'; CHAR Id2 = '2'; Uart_Init(0,115200); Uart_Select(0); OSInit(); OSTaskCreate(Task1, (void *)&Id1, (OS_STK *)&Stack1[STACKSIZE - 1], 5); OSTaskCreate(Task2, (void *)&Id2, (OS_STK *)&Stack2[STACKSIZE - 1], 6); OSStart(); return 0; } // main 不知道是不是我的uc/os源码出了问题,我的邮箱Leonner@126.com,请哪位有移植成功的给我发一份源码,谢谢! |
2楼: | >>参与讨论 |
作者: mfk0833 于 2006/7/8 20:13:00 发布:
re 个人认为,你的时钟中断服务程序没有起作用,你应该看一看能不能进中断。 |
|
|
Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号 |