世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

移植UC/OS,调用OSTimeDly后不能任务调度,急!急!急!

作者:笨蛋不笨 栏目:嵌入式系统
移植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
re
个人认为,你的时钟中断服务程序没有起作用,你应该看一看能不能进中断。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
UCOS的2个教训
UCOSII怎么可以在内存里运行?
请问在哪儿能找到39vf160的数据手册啊?
谁有USOSII在44B0下的版本?
求助:关于学习嵌入式!


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号