导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→移植uc/os中OSTimeDly函数的问题,急![leonner]

 *第41900篇: 移植uc/os中OSTimeDly函数的问题,急!

  
楼 主:leonner 2006年7月8日07:43
 移植uc/os中OSTimeDly函数的问题,急!
我在44b0x开发板上移植uc/os时遇到一个问题,测试代码如下:task1调用OSTimeDly后就死了,不能再次进入运行状态了,是不是时间调度出问题了,只要程序中没有OSTimeDly之类的时间调度函数,程序都没有问题,只有在task2中加入OSTimeDlyResume后,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(OS_TICKS_PER_SEC);
  Uart_Printf("I am task2\n");
  OSTimeDly(200);
 }
}

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';
 OSInit();
 OSTaskCreate(Task1, (void *)&Id1, (OS_STK *)&Stack1[STACKSIZE - 1], 5);
 OSTaskCreate(Task2, (void *)&Id2, (OS_STK *)&Stack2[STACKSIZE - 1],10);
 OSStart();
 return 0;

  
2楼:raker 2006年7月10日13:04
 OS时钟的计数源选择对吗
觉得你应该看看你的计数源选择对了吗,或许是计数器工作了,但是没有脉冲输入,永远也达不到你要的定时宽度.
  
3楼:wl80382000 2006年7月12日14:31
 会不会是
时钟节拍和老程序不一样      比如以前是10   现在是300ms,这样你用同样的OS_TICKS_PER_SEC可能会变得超级漫长

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:你想设计出你自己的单片机吗?请到这里来

[下一篇主题]:请求高手帮忙测试一种IC的方法和没备