请教一个ucos的问题?

[复制链接]
2711|8
 楼主| jack.king 发表于 2008-8-16 17:55 | 显示全部楼层 |阅读模式
程序如下:
#include <includes.h>
void TaskStartyya(void *yydata) reentrant;
OS_STK TaskStartStkyya[MaxStkSize];
void main(void)
{
    OSInit();
    InitTimer0();//程序可以执行到这里下面的就没有执行了我感到很不解!但是软件仿真的时候有可以用(是用keilc里面写的)
    OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);
    OSStart();
}
void TaskStartyya(void *yydata) reentrant
{
    yydata=yydata;
    beep =0;//喇叭响
    for(;;)
           {
            led = 1;//发光二极管亮
            OSTimeDly(OS_TICKS_PER_SEC);    
           }    
}
while_1 发表于 2008-8-17 01:13 | 显示全部楼层

试试作如下改动


void TaskStartyya(void *yydata) reentrant
{
    yydata=yydata;
    InitTimer0();//把定时器开启部分放到这里
    beep =0;//喇叭响
    for(;;)
           {
            led = 1;//发光二极管亮
            OSTimeDly(OS_TICKS_PER_SEC);    
           }    
}

这样的写法是书上这么建议的(等初始化完成后再进行任务调度)。
 楼主| jack.king 发表于 2008-8-17 10:32 | 显示全部楼层

谢谢LS的方法但是还是没有作用!

 楼主| jack.king 发表于 2008-8-19 21:07 | 显示全部楼层

找了好多资料还是没有解决

找了好多资料还是没有解决
   在网上都说要修改startup.a51我也按照要求去修改了
  但是还是没有解决问题?
   难道还要去修改什么别的东西吗?

  
 楼主| jack.king 发表于 2008-8-21 11:52 | 显示全部楼层
三块石头 发表于 2008-8-21 13:23 | 显示全部楼层

InitTimer0()里不能开中断

应当放在OSStart()之后再开中断

另外timer0是不是没有允许中断? 或者TR0位没有置起来?
oahzhao 发表于 2008-8-21 17:01 | 显示全部楼层

timer0一定要开不然OS就跑不起来的

 楼主| jack.king 发表于 2008-8-22 10:22 | 显示全部楼层

改来改还是没有变化?

 楼主| jack.king 发表于 2008-8-22 13:05 | 显示全部楼层

6L的大侠请问若在OSStart()之前开中断不影响仿真吗?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

488

主题

2158

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部